derick          Wed Nov  3 18:27:29 2004 EDT

  Added files:                 (Branch: PHP_5_0)
    /php-src/tests/lang bug30638.phpt 

  Modified files:              
    /php-src    configure.in 
    /php-src/ext/soap   php_encoding.c 
    /php-src/ext/standard       formatted_print.c php_string.h scanf.c 
                                string.c 
    /php-src/tests/lang 034.phpt 
  Log:
  - MFH: Fixed bug #30630: Added a BSD based strtod function that is
    locale-independent. (PHP part)
  
  
http://cvs.php.net/diff.php/php-src/configure.in?r1=1.514.2.13&r2=1.514.2.14&ty=u
Index: php-src/configure.in
diff -u php-src/configure.in:1.514.2.13 php-src/configure.in:1.514.2.14
--- php-src/configure.in:1.514.2.13     Fri Oct 22 06:47:35 2004
+++ php-src/configure.in        Wed Nov  3 18:27:25 2004
@@ -1,4 +1,4 @@
-dnl ## $Id: configure.in,v 1.514.2.13 2004/10/22 10:47:35 edink Exp $ -*- sh -*-
+dnl ## $Id: configure.in,v 1.514.2.14 2004/11/03 23:27:25 derick Exp $ -*- sh -*-
 dnl ## Process this file with autoconf to produce a configure script.
 
 divert(1)
@@ -1248,7 +1248,7 @@
     zend_variables.c zend.c zend_API.c zend_extensions.c zend_hash.c \
     zend_list.c zend_indent.c zend_builtin_functions.c zend_sprintf.c \
     zend_ini.c zend_qsort.c zend_multibyte.c zend_ts_hash.c zend_stream.c \
-    zend_iterators.c zend_interfaces.c zend_exceptions.c)
+    zend_iterators.c zend_interfaces.c zend_exceptions.c zend_strtod.c)
 
 if test -r "$abs_srcdir/Zend/zend_objects.c"; then
   PHP_ADD_SOURCES(Zend, zend_objects.c zend_object_handlers.c zend_objects_API.c 
zend_mm.c \
http://cvs.php.net/diff.php/php-src/ext/soap/php_encoding.c?r1=1.71.2.6&r2=1.71.2.7&ty=u
Index: php-src/ext/soap/php_encoding.c
diff -u php-src/ext/soap/php_encoding.c:1.71.2.6 
php-src/ext/soap/php_encoding.c:1.71.2.7
--- php-src/ext/soap/php_encoding.c:1.71.2.6    Tue Sep 14 08:13:38 2004
+++ php-src/ext/soap/php_encoding.c     Wed Nov  3 18:27:26 2004
@@ -17,12 +17,13 @@
   |          Dmitry Stogov <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
 */
-/* $Id: php_encoding.c,v 1.71.2.6 2004/09/14 12:13:38 dmitry Exp $ */
+/* $Id: php_encoding.c,v 1.71.2.7 2004/11/03 23:27:26 derick Exp $ */
 
 #include <time.h>
 
 #include "php_soap.h"
 #include "ext/libxml/php_libxml.h"
+#include "zend_strtod.h"
 
 /* zval type decode */
 static zval *to_zval_double(encodeTypePtr type, xmlNodePtr data);
@@ -686,7 +687,7 @@
                        errno = 0;
                        ret->value.lval = strtol(data->children->content, NULL, 0);
                        if (errno == ERANGE) { /* overflow */
-                               ret->value.dval = strtod(data->children->content, 
NULL);
+                               ret->value.dval = zend_strtod(data->children->content, 
NULL);
                                ret->type = IS_DOUBLE;
                        } else {
                                ret->type = IS_LONG;
http://cvs.php.net/diff.php/php-src/ext/standard/formatted_print.c?r1=1.77.2.1&r2=1.77.2.2&ty=u
Index: php-src/ext/standard/formatted_print.c
diff -u php-src/ext/standard/formatted_print.c:1.77.2.1 
php-src/ext/standard/formatted_print.c:1.77.2.2
--- php-src/ext/standard/formatted_print.c:1.77.2.1     Sun Jul 18 13:28:04 2004
+++ php-src/ext/standard/formatted_print.c      Wed Nov  3 18:27:26 2004
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: formatted_print.c,v 1.77.2.1 2004/07/18 17:28:04 iliaa Exp $ */
+/* $Id: formatted_print.c,v 1.77.2.2 2004/11/03 23:27:26 derick Exp $ */
 
 #include <math.h>                              /* modf() */
 #include "php.h"
@@ -303,7 +303,14 @@
        char *cvt;
        register int i = 0, j = 0;
        int sign, decpt, cvt_len;
-       char decimal_point = EG(float_separator)[0];
+#ifdef HAVE_LOCALE_H
+       struct lconv lc;
+       char decimal_point;
+       localeconv_r(&lc);
+       decimal_point = (lc.decimal_point)[0];
+#else
+       char decimal_point = '.';
+#endif
 
        PRINTF_DEBUG(("sprintf: appenddouble(%x, %x, %x, %f, %d, '%c', %d, %c)\n",
                                  *buffer, pos, size, number, width, padding, 
alignment, fmt));
http://cvs.php.net/diff.php/php-src/ext/standard/php_string.h?r1=1.84&r2=1.84.2.1&ty=u
Index: php-src/ext/standard/php_string.h
diff -u php-src/ext/standard/php_string.h:1.84 
php-src/ext/standard/php_string.h:1.84.2.1
--- php-src/ext/standard/php_string.h:1.84      Thu Jan  8 12:32:51 2004
+++ php-src/ext/standard/php_string.h   Wed Nov  3 18:27:26 2004
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: php_string.h,v 1.84 2004/01/08 17:32:51 sniper Exp $ */
+/* $Id: php_string.h,v 1.84.2.1 2004/11/03 23:27:26 derick Exp $ */
 
 /* Synced with php 3.0 revision 1.43 1999-06-16 [ssb] */
 
@@ -112,7 +112,7 @@
 PHPAPI int strnatcmp_ex(char const *a, size_t a_len, char const *b, size_t b_len, int 
fold_case);
 
 #ifdef HAVE_LOCALECONV
-struct lconv *localeconv_r(struct lconv *out);
+PHPAPI struct lconv *localeconv_r(struct lconv *out);
 #endif
 
 PHPAPI char *php_strtoupper(char *s, size_t len);
http://cvs.php.net/diff.php/php-src/ext/standard/scanf.c?r1=1.29&r2=1.29.2.1&ty=u
Index: php-src/ext/standard/scanf.c
diff -u php-src/ext/standard/scanf.c:1.29 php-src/ext/standard/scanf.c:1.29.2.1
--- php-src/ext/standard/scanf.c:1.29   Wed Feb 18 14:48:12 2004
+++ php-src/ext/standard/scanf.c        Wed Nov  3 18:27:27 2004
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: scanf.c,v 1.29 2004/02/18 19:48:12 iliaa Exp $ */
+/* $Id: scanf.c,v 1.29.2.1 2004/11/03 23:27:27 derick Exp $ */
 
 /*
    scanf.c --
@@ -78,6 +78,7 @@
 #endif
 #include "zend_execute.h"
 #include "zend_operators.h"
+#include "zend_strtod.h"
 #include "php_globals.h"
 #include "basic_functions.h"
 #include "scanf.h"
@@ -1204,7 +1205,7 @@
                                if (!(flags & SCAN_SUPPRESS)) {
                                        double dvalue;
                                        *end = '\0';
-                                       dvalue = strtod(buf, NULL);
+                                       dvalue = zend_strtod(buf, NULL);
                                        if (numVars) {
                                                current = args[objIndex++];
                                                convert_to_double( *current );
http://cvs.php.net/diff.php/php-src/ext/standard/string.c?r1=1.420.2.1&r2=1.420.2.2&ty=u
Index: php-src/ext/standard/string.c
diff -u php-src/ext/standard/string.c:1.420.2.1 php-src/ext/standard/string.c:1.420.2.2
--- php-src/ext/standard/string.c:1.420.2.1     Thu Oct  7 19:11:20 2004
+++ php-src/ext/standard/string.c       Wed Nov  3 18:27:28 2004
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: string.c,v 1.420.2.1 2004/10/07 23:11:20 iliaa Exp $ */
+/* $Id: string.c,v 1.420.2.2 2004/11/03 23:27:28 derick Exp $ */
 
 /* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */
 
@@ -136,7 +136,7 @@
 #ifdef HAVE_LOCALECONV
 /* {{{ localeconv_r
  * glibc's localeconv is not reentrant, so lets make it so ... sorta */
-struct lconv *localeconv_r(struct lconv *out)
+PHPAPI struct lconv *localeconv_r(struct lconv *out)
 {
        struct lconv *res;
 
@@ -3741,18 +3741,6 @@
                        efree(args);
                        RETVAL_STRING(retval, 1);
                        
-                       if (cat == LC_NUMERIC || cat == LC_ALL) {
-                               struct lconv lc;
-                               localeconv_r(&lc);
-                       
-                               EG(float_separator)[0] = (lc.decimal_point)[0];
-
-                               if ((lc.decimal_point)[0] != '.') {
-                                       /* set locale back to C */
-                                       setlocale(LC_NUMERIC, "C");     
-                               }
-                       }
-                       
                        return;
                }
                
http://cvs.php.net/diff.php/php-src/tests/lang/034.phpt?r1=1.7&r2=1.7.2.1&ty=u
Index: php-src/tests/lang/034.phpt
diff -u php-src/tests/lang/034.phpt:1.7 php-src/tests/lang/034.phpt:1.7.2.1
--- php-src/tests/lang/034.phpt:1.7     Wed May 19 04:45:46 2004
+++ php-src/tests/lang/034.phpt Wed Nov  3 18:27:28 2004
@@ -1,5 +1,5 @@
 --TEST--
-Locale settings affecting float parsing
+Bug #12647 (Locale settings affecting float parsing)
 --SKIPIF--
 <?php  # try to activate a german locale
 if (setlocale(LC_NUMERIC, "de_DE", "de", "german", "ge") === FALSE) {
@@ -12,7 +12,6 @@
 setlocale(LC_NUMERIC, "de_DE", "de", "german", "ge");
 
 echo (float)"3.14", "\n";
-
 ?>
 --EXPECT--
 3,14

http://cvs.php.net/co.php/php-src/tests/lang/bug30638.phpt?r=1.1&p=1
Index: php-src/tests/lang/bug30638.phpt
+++ php-src/tests/lang/bug30638.phpt

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to