- Fixed bug #35288 (iconv() function defined as libiconv())
authorfoobar <sniper@php.net>
Tue, 3 Jan 2006 13:21:07 +0000 (13:21 +0000)
committerfoobar <sniper@php.net>
Tue, 3 Jan 2006 13:21:07 +0000 (13:21 +0000)
NEWS
ext/iconv/config.m4

diff --git a/NEWS b/NEWS
index bd988d9b1a25ddb9808f664df1ee188843f4d368..9ce6e14d288553170e50d99fe00f2b505e645296 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -22,6 +22,7 @@ PHP                                                                        NEWS
 - Fixed bug #35517 (mysql_stmt_fetch returns NULL on data truncation). (Georg)
 - Fixed bug #35377 (PDO_SQLITE: undefined reference to "fdatasync").
   (Nuno, Jani)
+- Fixed bug 35288 (iconv() function defined as libiconv()). (Nuno)
 - Fixed bug #29955 (mb_strtoupper() / lower() broken with Turkish encoding).
   (Rui)
 - Fixed bug #28899 (mb_substr() and substr() behave differently when
index 8df214561c62b2b64acb943a5942261fbd0d34cf..1614b1781c842f7a5b339f23b707b9cc814f0e9d 100644 (file)
@@ -14,9 +14,6 @@ if test "$PHP_ICONV" != "no"; then
   ])
 
   if test "$iconv_avail" != "no"; then
-    iconv_cflags_save="$CFLAGS"
-    iconv_ldflags_save="$LDFLAGS"
-
     if test -z "$ICONV_DIR"; then
       for i in /usr/local /usr; do
         if test -f "$i/include/iconv.h" || test -f "$i/include/giconv.h"; then
@@ -40,46 +37,55 @@ if test "$PHP_ICONV" != "no"; then
       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])
-      AC_TRY_LINK([#include <gnu/libc-version.h>],[gnu_get_libc_version();],
+    AC_MSG_CHECKING([if iconv is glibc's])
+    AC_TRY_LINK([#include <gnu/libc-version.h>],[gnu_get_libc_version();],
+    [
+      AC_MSG_RESULT(yes)
+      iconv_impl_name="glibc"
+    ],[
+      AC_MSG_RESULT(no)
+    ])
+
+    if test -z "$iconv_impl_name"; then
+      AC_MSG_CHECKING([if using GNU libiconv])
+      php_iconv_old_ld="$LDFLAGS"
+      LDFLAGS="-liconv $LDFLAGS"
+      AC_TRY_RUN([
+        #include <$PHP_ICONV_H_PATH>
+       int main() {
+            printf("%d", _libiconv_version);
+            return 0;
+       }
+      ],[
+        AC_MSG_RESULT(yes)
+        iconv_impl_name="gnu_libiconv"
+      ],[
+        AC_MSG_RESULT(no)
+        LDFLAGS="$php_iconv_old_ld"
+      ])
+    fi
+
+    if test -z "$iconv_impl_name"; then
+      AC_MSG_CHECKING([if iconv is Konstantin Chuguev's])
+      AC_TRY_LINK([#include <iconv.h>],[iconv_ccs_init(NULL, NULL);],
       [
         AC_MSG_RESULT(yes)
-        iconv_impl_name="glibc"
+        iconv_impl_name="bsd"
       ],[
         AC_MSG_RESULT(no)
       ])
-    else
-      case "$iconv_lib_name" in
-        iconv [)]
-          AC_MSG_CHECKING([if iconv is Konstantin Chuguev's])
-          AC_TRY_LINK([#include <iconv.h>],[iconv_ccs_init(NULL, NULL);],
-          [
-            AC_MSG_RESULT(yes)
-            iconv_impl_name="bsd"
-          ],[
-            AC_MSG_RESULT(no)
-            iconv_impl_name="gnu_libiconv"
-          ])
-          ;;
-
-        giconv [)]
-          iconv_impl_name="gnu_libiconv"
-          ;;
-
-        biconv [)]
-          iconv_impl_name="bsd"
-          ;;
-      esac
-    fi 
+    fi
 
     echo > ext/iconv/php_have_bsd_iconv.h
     echo > ext/iconv/php_have_glibc_iconv.h
+    echo > ext/iconv/php_have_libiconv.h
 
     case "$iconv_impl_name" in
       gnu_libiconv [)]
         PHP_DEFINE([PHP_ICONV_IMPL],[\"libiconv\"],[ext/iconv])
         AC_DEFINE([PHP_ICONV_IMPL],["libiconv"],[Which iconv implementation to use])
+        PHP_DEFINE([HAVE_LIBICONV],1,[ext/iconv])
+        PHP_ADD_LIBRARY_WITH_PATH(iconv, "$PHP_ICONV_PREFIX/$PHP_LIBDIR", ICONV_SHARED_LIBADD)
         ;;
 
       bsd [)]
@@ -141,9 +147,6 @@ int main() {
       AC_MSG_RESULT([no])
     ])
 
-    CFLAGS="$iconv_cflags_save"
-    LDFLAGS="$iconv_ldflags_save"
-
     PHP_NEW_EXTENSION(iconv, iconv.c, $ext_shared,, [-I\"$PHP_ICONV_PREFIX/include\"])
     PHP_SUBST(ICONV_SHARED_LIBADD)
     PHP_INSTALL_HEADERS([ext/iconv/])