felipe Tue Aug 12 19:38:55 2008 UTC Modified files: (Branch: PHP_5_3) /php-src/ext/standard file.c /php-src/ext/standard/tests/file fscanf.phpt fscanf_error.phpt Log: - New parameter parsing API (for fscanf) http://cvs.php.net/viewvc.cgi/php-src/ext/standard/file.c?r1=1.409.2.6.2.28.2.20&r2=1.409.2.6.2.28.2.21&diff_format=u Index: php-src/ext/standard/file.c diff -u php-src/ext/standard/file.c:1.409.2.6.2.28.2.20 php-src/ext/standard/file.c:1.409.2.6.2.28.2.21 --- php-src/ext/standard/file.c:1.409.2.6.2.28.2.20 Mon Aug 11 13:11:30 2008 +++ php-src/ext/standard/file.c Tue Aug 12 19:38:54 2008 @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: file.c,v 1.409.2.6.2.28.2.20 2008/08/11 13:11:30 pajoye Exp $ */ +/* $Id: file.c,v 1.409.2.6.2.28.2.21 2008/08/12 19:38:54 felipe Exp $ */ /* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */ @@ -1168,30 +1168,18 @@ Implements a mostly ANSI compatible fscanf() */ PHP_FUNCTION(fscanf) { - int result; - zval **file_handle, **format_string; + int result, format_len, type, argc = 0; + zval ***args = NULL; + zval *file_handle; + char *buf, *format; size_t len; - int type; - char *buf; void *what; - - zval ***args; - int argCount; - - argCount = ZEND_NUM_ARGS(); - if (argCount < 2) { - WRONG_PARAM_COUNT; - } - args = (zval ***)safe_emalloc(argCount, sizeof(zval **), 0); - if (zend_get_parameters_array_ex(argCount, args) == FAILURE) { - efree( args ); - WRONG_PARAM_COUNT; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs*", &file_handle, &format, &format_len, &args, &argc) == FAILURE) { + return; } - file_handle = args[0]; - format_string = args[1]; - - what = zend_fetch_resource(file_handle TSRMLS_CC, -1, "File-Handle", &type, 2, php_file_le_stream(), php_file_le_pstream()); + what = zend_fetch_resource(&file_handle TSRMLS_CC, -1, "File-Handle", &type, 2, php_file_le_stream(), php_file_le_pstream()); /* * we can't do a ZEND_VERIFY_RESOURCE(what), otherwise we end up @@ -1199,26 +1187,30 @@ * if the code behind ZEND_VERIFY_RESOURCE changed. - cc */ if (!what) { - efree(args); + if (args) { + efree(args); + } RETURN_FALSE; } buf = php_stream_get_line((php_stream *) what, NULL, 0, &len); if (buf == NULL) { - efree(args); + if (args) { + efree(args); + } RETURN_FALSE; } - convert_to_string_ex(format_string); - result = php_sscanf_internal(buf, Z_STRVAL_PP(format_string), argCount, args, 2, &return_value TSRMLS_CC); + result = php_sscanf_internal(buf, format, argc, args, 0, &return_value TSRMLS_CC); - efree(args); + if (args) { + efree(args); + } efree(buf); if (SCAN_ERROR_WRONG_PARAM_COUNT == result) { WRONG_PARAM_COUNT; } - } /* }}} */ http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/fscanf.phpt?r1=1.1.2.2.2.1&r2=1.1.2.2.2.2&diff_format=u Index: php-src/ext/standard/tests/file/fscanf.phpt diff -u php-src/ext/standard/tests/file/fscanf.phpt:1.1.2.2.2.1 php-src/ext/standard/tests/file/fscanf.phpt:1.1.2.2.2.2 --- php-src/ext/standard/tests/file/fscanf.phpt:1.1.2.2.2.1 Mon Nov 5 17:43:20 2007 +++ php-src/ext/standard/tests/file/fscanf.phpt Tue Aug 12 19:38:54 2008 @@ -60,14 +60,14 @@ echo "Done\n"; ?> --EXPECTF-- -Warning: Wrong parameter count for fscanf() in %s on line %d +Warning: fscanf() expects at least 2 parameters, 0 given in %s on line %d NULL -Warning: Wrong parameter count for fscanf() in %s on line %d +Warning: fscanf() expects at least 2 parameters, 1 given in %s on line %d NULL -Warning: fscanf(): supplied argument is not a valid File-Handle resource in %s on line %d -bool(false) +Warning: fscanf() expects parameter 1 to be resource, array given in %s on line %d +NULL int(0) NULL int(1) http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/fscanf_error.phpt?r1=1.1.2.1.2.1&r2=1.1.2.1.2.2&diff_format=u Index: php-src/ext/standard/tests/file/fscanf_error.phpt diff -u php-src/ext/standard/tests/file/fscanf_error.phpt:1.1.2.1.2.1 php-src/ext/standard/tests/file/fscanf_error.phpt:1.1.2.1.2.2 --- php-src/ext/standard/tests/file/fscanf_error.phpt:1.1.2.1.2.1 Mon Nov 5 17:43:20 2007 +++ php-src/ext/standard/tests/file/fscanf_error.phpt Tue Aug 12 19:38:54 2008 @@ -64,13 +64,13 @@ --EXPECTF-- *** Testing fscanf() for error conditions *** -Warning: Wrong parameter count for fscanf() in %s on line %d +Warning: fscanf() expects at least 2 parameters, 0 given in %s on line %d NULL -Warning: Wrong parameter count for fscanf() in %s on line %d +Warning: fscanf() expects at least 2 parameters, 1 given in %s on line %d NULL -Warning: fscanf(): %d is not a valid File-Handle resource in %s on line %d +Warning: fscanf(): 6 is not a valid File-Handle resource in %s on line %d bool(false) Warning: fscanf(): Different numbers of variable names and field specifiers in %s on line %d @@ -97,4 +97,3 @@ NULL *** Done *** -
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php