cvs: php4(PHP_4_0_6) /ext/standard basic_functions.c formatted_print.c
| From: | Derick Rethans | Date: | Sun, 20 May 2001 00:31:46 +0000 |
| Subject: | cvs: php4(PHP_4_0_6) /ext/standard basic_functions.c formatted_print.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-5862@lists.php.net to get a copy of this message | ||
derick Sat May 19 17:31:46 2001 EDT
Modified files: (Branch: PHP_4_0_6)
/php4/ext/standard formatted_print.c basic_functions.c
Log:
- Fix for bug #9698/#10681 (patch by kettler@gmx.net)
@- Added the 'u' modifier to printf/sprintf which prints unsigned longs.
@ (Derick)
Index: php4/ext/standard/formatted_print.c
diff -u php4/ext/standard/formatted_print.c:1.31 php4/ext/standard/formatted_print.c:1.31.2.1
--- php4/ext/standard/formatted_print.c:1.31 Wed Apr 25 14:05:59 2001
+++ php4/ext/standard/formatted_print.c Sat May 19 17:31:45 2001
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: formatted_print.c,v 1.31 2001/04/25 21:05:59 rasmus Exp $ */
+/* $Id: formatted_print.c,v 1.31.2.1 2001/05/20 00:31:45 derick Exp $ */
#include <math.h> /* modf() */
#include "php.h"
@@ -232,7 +232,34 @@
neg, 0);
}
+inline static void
+php_sprintf_appenduint(char **buffer, int *pos, int *size, int number,
+ int width, char padding, int alignment)
+{
+ char numbuf[NUM_BUF_SIZE];
+ register unsigned int magn, nmagn, i = NUM_BUF_SIZE - 1;
+
+ PRINTF_DEBUG(("sprintf: appenduint(%x, %x, %x, %d, %d, '%c', %d)\n",
+ *buffer, pos, size, number, width, padding, alignment));
+ magn = (unsigned int) number;
+ /* Can't right-pad 0's on integers */
+ if (alignment == 0 && padding == '0') padding = ' ';
+
+ numbuf[i] = '\0';
+
+ do {
+ nmagn = magn / 10;
+
+ numbuf[--i] = (magn - (nmagn * 10)) + '0';
+ magn = nmagn;
+ }
+ while (magn > 0 && i > 0);
+ PRINTF_DEBUG(("sprintf: appending %d as \"%s\", i=%d\n", number,
&numbuf[i], i));
+ php_sprintf_appendstring(buffer, pos, size, &numbuf[i], width, 0,
+ padding, alignment, (NUM_BUF_SIZE - 1) - i, 0, 0);
+}
+
inline static void
php_sprintf_appenddouble(char **buffer, int *pos,
int *size, double number,
@@ -524,6 +551,13 @@
case 'd':
convert_to_long_ex(args[argnum]);
php_sprintf_appendint(&result, &outpos, &size,
+ (*args[argnum])->value.lval,
+ width, padding, alignment);
+ break;
+
+ case 'u':
+ convert_to_long_ex(args[argnum]);
+ php_sprintf_appenduint(&result, &outpos, &size,
(*args[argnum])->value.lval,
width, padding, alignment);
break;
Index: php4/ext/standard/basic_functions.c
diff -u php4/ext/standard/basic_functions.c:1.331.2.2 php4/ext/standard/basic_functions.c:1.331.2.3
--- php4/ext/standard/basic_functions.c:1.331.2.2 Sat May 19 15:23:13 2001
+++ php4/ext/standard/basic_functions.c Sat May 19 17:31:45 2001
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: basic_functions.c,v 1.331.2.2 2001/05/19 22:23:13 sniper Exp $ */
+/* $Id: basic_functions.c,v 1.331.2.3 2001/05/20 00:31:45 derick Exp $ */
#include "php.h"
#include "php_main.h"
@@ -958,7 +958,6 @@
PHP_FUNCTION(ip2long)
{
zval **str;
- char tmp_buff[16];
if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &str) == FAILURE) {
WRONG_PARAM_COUNT;
@@ -966,9 +965,7 @@
convert_to_string_ex(str);
- sprintf(tmp_buff, "%u", ntohl(inet_addr(Z_STRVAL_PP(str))));
-
- RETURN_STRING(tmp_buff,1);
+ RETURN_LONG(ntohl(inet_addr(Z_STRVAL_PP(str))));
}
/* }}} */