moriyoshi Sun Jul 6 17:11:51 2003 EDT Modified files: (Branch: PHP_4_3) /php-src/ext/iconv config.m4 iconv.c php_iconv.h Log: MFH(r-1.22, r-1.90, r-1.18): avoid miscellaneous conflicts between glibc's iconv and libiconv. Index: php-src/ext/iconv/config.m4 diff -u php-src/ext/iconv/config.m4:1.19 php-src/ext/iconv/config.m4:1.19.2.1 --- php-src/ext/iconv/config.m4:1.19 Thu Oct 31 15:23:53 2002 +++ php-src/ext/iconv/config.m4 Sun Jul 6 17:11:51 2003 @@ -1,5 +1,5 @@ dnl -dnl $Id: config.m4,v 1.19 2002/10/31 20:23:53 moriyoshi Exp $ +dnl $Id: config.m4,v 1.19.2.1 2003/07/06 21:11:51 moriyoshi Exp $ dnl PHP_ARG_WITH(iconv, for iconv support, @@ -15,44 +15,22 @@ if test "$iconv_avail" != "no"; then iconv_cflags_save="$CFLAGS" - CFLAGS="$CFLAGS $INCLUDES" - AC_MSG_CHECKING([if iconv supports errno]) - AC_TRY_RUN([ -#define LIBICONV_PLUG -#include <iconv.h> -#include <errno.h> -#if defined(_LIBICONV_H) -#define icv_open(a, b) libiconv_open(a, b) -#define icv_close(a) libiconv_close(a) -#define icv(a, b, c, d, e) libiconv(a, b, c, d, e) -#else -#define icv_open(a, b) iconv_open(a, b) -#define icv_close(a) iconv_close(a) -#define icv(a, b, c, d, e) iconv(a, b, c, d, e) -#endif + iconv_ldflags_save="$LDFLAGS" -int main() { - iconv_t cd; - cd = icv_open( "*blahblah*", "*blahblah*" ); - if( cd == (iconv_t)(-1) ) { - if( errno == EINVAL ) { - return 0; - } else { - return 1; - } - } - icv_close( cd ); - return 2; -} - ],[ - AC_MSG_RESULT(yes) - PHP_DEFINE([ICONV_SUPPORTS_ERRNO],1) - AC_DEFINE([ICONV_SUPPORTS_ERRNO],1,[Whether iconv supports error no or not]) - ],[ - AC_MSG_RESULT(no) - PHP_DEFINE([ICONV_SUPPORTS_ERRNO],0) - AC_DEFINE([ICONV_SUPPORTS_ERRNO],0,[Whether iconv supports error no or not]) - ]) + if test -z "$ICONV_DIR"; then + PHP_ICONV_PREFIX="/usr" + else + PHP_ICONV_PREFIX="$ICONV_DIR" + fi + + CFLAGS="-I$PHP_ICONV_PREFIX/include $CFLAGS" + LDFLAGS="-L$PHP_ICONV_PREFIX/lib $LDFLAGS" + + if test -r $PHP_ICONV_PREFIX/include/giconv.h; then + PHP_ICONV_H_PATH="$PHP_ICONV_PREFIX/include/giconv.h" + else + PHP_ICONV_H_PATH="$PHP_ICONV_PREFIX/include/iconv.h" + fi if test -z "$iconv_lib_name"; then AC_MSG_CHECKING([if iconv is glibc's]) @@ -108,7 +86,39 @@ ;; esac + AC_MSG_CHECKING([if iconv supports errno]) + AC_TRY_RUN([ +#include <$PHP_ICONV_H_PATH> +#include <errno.h> + +int main() { + iconv_t cd; + cd = iconv_open( "*blahblah*", "*blahblah*" ); + if (cd == (iconv_t)(-1)) { + if (errno == EINVAL) { + return 0; + } else { + return 1; + } + } + iconv_close( cd ); + return 2; +} + ],[ + AC_MSG_RESULT(yes) + PHP_DEFINE([ICONV_SUPPORTS_ERRNO],1) + AC_DEFINE([ICONV_SUPPORTS_ERRNO],1,[Whether iconv supports error no or not]) + ],[ + AC_MSG_RESULT(no) + PHP_DEFINE([ICONV_SUPPORTS_ERRNO],0) + AC_DEFINE([ICONV_SUPPORTS_ERRNO],0,[Whether iconv supports error no or not]) + ]) + CFLAGS="$iconv_cflags_save" + LDFLAGS="$iconv_ldflags_save" + + PHP_DEFINE([PHP_ICONV_H_PATH], [<$PHP_ICONV_H_PATH>]) + AC_DEFINE_UNQUOTED([PHP_ICONV_H_PATH], [<$PHP_ICONV_H_PATH>], [Path to iconv.h]) PHP_NEW_EXTENSION(iconv, iconv.c, $ext_shared) PHP_SUBST(ICONV_SHARED_LIBADD) Index: php-src/ext/iconv/iconv.c diff -u php-src/ext/iconv/iconv.c:1.65.2.5 php-src/ext/iconv/iconv.c:1.65.2.6 --- php-src/ext/iconv/iconv.c:1.65.2.5 Wed Jun 4 10:29:53 2003 +++ php-src/ext/iconv/iconv.c Sun Jul 6 17:11:51 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: iconv.c,v 1.65.2.5 2003/06/04 14:29:53 moriyoshi Exp $ */ +/* $Id: iconv.c,v 1.65.2.6 2003/07/06 21:11:51 moriyoshi Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -36,27 +36,16 @@ #ifdef HAVE_ICONV -#ifdef HAVE_GICONV_H -#include <giconv.h> -#else -#include <iconv.h> +#ifndef PHP_ICONV_H_PATH +#define PHP_ICONV_H_PATH <iconv.h> #endif +#include PHP_ICONV_H_PATH + #ifdef HAVE_GLIBC_ICONV #include <gnu/libc-version.h> #endif -#ifdef HAVE_LIBICONV -#define LIBICONV_PLUG -#define icv_open(a, b) libiconv_open(a, b) -#define icv_close(a) libiconv_close(a) -#define icv(a, b, c, d, e) libiconv(a, b, c, d, e) -#else -#define icv_open(a, b) iconv_open(a, b) -#define icv_close(a) iconv_close(a) -#define icv(a, b, c, d, e) iconv(a, (char **) b, c, d, e) -#endif - /* {{{ iconv_functions[] */ function_entry iconv_functions[] = { @@ -213,7 +202,7 @@ in_size = in_len; - cd = icv_open(out_charset, in_charset); + cd = icov_open(out_charset, in_charset); if (cd == (iconv_t)(-1)) { return PHP_ICONV_ERR_UNKNOWN; @@ -222,7 +211,7 @@ out_buffer = (char *) emalloc(out_size + 1); out_p = out_buffer; - result = icv(cd, (const char **) &in_p, &in_size, (char **) + result = iconv(cd, (const char **) &in_p, &in_size, (char **) &out_p, &out_left); if (result == (size_t)(-1)) { @@ -235,7 +224,7 @@ } /* flush the shift-out sequences */ - result = icv(cd, NULL, NULL, &out_p, &out_left); + result = iconv(cd, NULL, NULL, &out_p, &out_left); if (result == (size_t)(-1)) { efree(out_buffer); @@ -246,7 +235,7 @@ out_buffer[*out_len] = '\0'; *out = out_buffer; - icv_close(cd); + iconv_close(cd); return PHP_ICONV_ERR_SUCCESS; @@ -263,7 +252,7 @@ *out = NULL; *out_len = 0; - cd = icv_open(out_charset, in_charset); + cd = iconv_open(out_charset, in_charset); if (cd == (iconv_t)(-1)) { if (errno == EINVAL) { @@ -280,7 +269,7 @@ out_p = out_buf; while (in_left > 0) { - result = icv(cd, (const char **) &in_p, &in_left, (char **) &out_p, &out_left); + result = iconv(cd, (const char **) &in_p, &in_left, (char **) &out_p, &out_left); out_size = bsz - out_left; if (result == (size_t)(-1)) { if (errno == E2BIG && in_left > 0) { @@ -303,7 +292,7 @@ if (result != (size_t)(-1)) { /* flush the shift-out sequences */ for (;;) { - result = icv(cd, NULL, NULL, (char **) &out_p, &out_left); + result = iconv(cd, NULL, NULL, (char **) &out_p, &out_left); out_size = bsz - out_left; if (result != (size_t)(-1)) { @@ -327,7 +316,7 @@ } } - icv_close(cd); + iconv_close(cd); if (result == (size_t)(-1)) { switch (errno) { Index: php-src/ext/iconv/php_iconv.h diff -u php-src/ext/iconv/php_iconv.h:1.12.2.2 php-src/ext/iconv/php_iconv.h:1.12.2.3 --- php-src/ext/iconv/php_iconv.h:1.12.2.2 Sun Jul 6 14:09:21 2003 +++ php-src/ext/iconv/php_iconv.h Sun Jul 6 17:11:51 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Revision: 1.12.2.2 $ */ +/* $Revision: 1.12.2.3 $ */ #ifndef PHP_ICONV_H #define PHP_ICONV_H @@ -35,6 +35,7 @@ #include "php_have_bsd_iconv.h" #include "php_iconv_supports_errno.h" #include "php_php_iconv_impl.h" +#include "php_php_iconv_h_path.h" #endif
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php