From: Felipe Pena Date: Wed, 23 Jul 2008 19:33:58 +0000 (+0000) Subject: - New parameter parsing API X-Git-Tag: BEFORE_HEAD_NS_CHANGE~1111 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cc9a38bdcab9a9116678099548950adabea0876b;p=php - New parameter parsing API --- diff --git a/ext/standard/assert.c b/ext/standard/assert.c index 4638212acf..d29d8edff9 100644 --- a/ext/standard/assert.c +++ b/ext/standard/assert.c @@ -149,8 +149,8 @@ PHP_FUNCTION(assert) RETURN_TRUE; } - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &assertion) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &assertion) == FAILURE) { + return; } if (Z_TYPE_PP(assertion) == IS_STRING || Z_TYPE_PP(assertion) == IS_UNICODE) { @@ -262,17 +262,16 @@ PHP_FUNCTION(assert) Set/get the various assert flags */ PHP_FUNCTION(assert_options) { - zval **what, **value; + zval **value; + long what; int oldint; int ac = ZEND_NUM_ARGS(); - if (ac < 1 || ac > 2 || zend_get_parameters_ex(ac, &what, &value) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ac TSRMLS_CC, "l|Z", &what, &value) == FAILURE) { + return; } - convert_to_long_ex(what); - - switch (Z_LVAL_PP(what)) { + switch (what) { case ASSERT_ACTIVE: oldint = ASSERTG(active); if (ac == 2) { @@ -328,7 +327,7 @@ PHP_FUNCTION(assert_options) break; default: - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown value %ld", Z_LVAL_PP(what)); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown value %ld", what); break; } diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 4bdf21404c..cb190d333b 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -4928,65 +4928,17 @@ error options: Send an error message somewhere */ PHP_FUNCTION(error_log) { - zval **string, **erropt = NULL, **option = NULL, **emailhead = NULL; - int opt_err = 0; char *message, *opt = NULL, *headers = NULL; + int message_len, opt_len, headers_len; + int opt_err = 0, argc = ZEND_NUM_ARGS(); + long erropt; - switch (ZEND_NUM_ARGS()) { - case 1: - if (zend_get_parameters_ex(1, &string) == FAILURE) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument 1 invalid"); - RETURN_FALSE; - } - break; - - case 2: - if (zend_get_parameters_ex(2, &string, &erropt) == FAILURE) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid arguments"); - RETURN_FALSE; - } - convert_to_long_ex(erropt); - opt_err = Z_LVAL_PP(erropt); - break; - - case 3: - if (zend_get_parameters_ex(3, &string, &erropt, &option) == FAILURE) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid arguments"); - RETURN_FALSE; - } - convert_to_long_ex(erropt); - opt_err = Z_LVAL_PP(erropt); - convert_to_string_ex(option); - opt = Z_STRVAL_PP(option); - break; - - case 4: - if (zend_get_parameters_ex (4, &string, &erropt, &option, &emailhead) == FAILURE) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid arguments"); - RETURN_FALSE; - } - break; - - default: - WRONG_PARAM_COUNT; - } - - convert_to_string_ex(string); - message = Z_STRVAL_PP(string); - - if (erropt != NULL) { - convert_to_long_ex(erropt); - opt_err = Z_LVAL_PP(erropt); - } - - if (option != NULL) { - convert_to_string_ex(option); - opt = Z_STRVAL_PP(option); + if (zend_parse_parameters(argc TSRMLS_CC, "s|lss", &message, &message_len, &erropt, &opt, &opt_len, &headers, &headers_len) == FAILURE) { + return; } - if (emailhead != NULL) { - convert_to_string_ex(emailhead); - headers = Z_STRVAL_PP(emailhead); + if (argc > 1) { + opt_err = erropt; } if (_php_error_log(opt_err, message, opt, headers TSRMLS_CC) == FAILURE) { diff --git a/ext/standard/tests/assert/assert04.phpt b/ext/standard/tests/assert/assert04.phpt index 43028ad3aa..5268325752 100644 --- a/ext/standard/tests/assert/assert04.phpt +++ b/ext/standard/tests/assert/assert04.phpt @@ -30,11 +30,11 @@ echo "not reached\n"; ?> --EXPECTF-- -Warning: Wrong parameter count for assert() in %s on line %d +Warning: assert() expects exactly 1 parameter, 2 given in %s on line %d -Warning: Wrong parameter count for assert_options() in %s on line %d +Warning: assert_options() expects at most 2 parameters, 3 given in %s on line %d -Warning: assert_options(): Unknown value 0 in %s on line %d +Warning: assert_options() expects parameter 1 to be long, Unicode string given in %s on line %d Warning: assert(): Assertion failed in %s on line %d diff --git a/ext/standard/tests/assert/assert_error1.phpt b/ext/standard/tests/assert/assert_error1.phpt index 992b81e7c4..8f7d1678c3 100644 --- a/ext/standard/tests/assert/assert_error1.phpt +++ b/ext/standard/tests/assert/assert_error1.phpt @@ -34,11 +34,11 @@ var_dump($r2=assert($sa,1)); //Catch recoverable error with handler var_dump($rc=assert('aa=sd+as+safsafasfaçsafçsafç')); --EXPECTF-- -Warning: Wrong parameter count for assert_options() in %s on line 14 +Warning: assert_options() expects at most 2 parameters, 3 given in %s on line %d NULL -Warning: assert_options(): Unknown value 0 in %s on line 18 -bool(false) +Warning: assert_options() expects parameter 1 to be long, Unicode string given in %s on line %d +NULL -Warning: Wrong parameter count for assert() in %s on line 22 +Warning: assert() expects exactly 1 parameter, 2 given in %s on line %d NULL