mirror of
https://github.com/php/php-src.git
synced 2026-04-28 18:53:33 +02:00
- Allow numeric options
- Add tests
This commit is contained in:
@@ -4470,7 +4470,8 @@ static int parse_opts(char * opts, opt_struct ** result)
|
||||
int i, count = 0;
|
||||
|
||||
for (i = 0; i < strlen(opts); i++) {
|
||||
if ((opts[i] >= 65 && opts[i] <= 90) ||
|
||||
if ((opts[i] >= 48 && opts[i] <= 57) ||
|
||||
(opts[i] >= 65 && opts[i] <= 90) ||
|
||||
(opts[i] >= 97 && opts[i] <= 122)
|
||||
) {
|
||||
count++;
|
||||
@@ -4480,8 +4481,9 @@ static int parse_opts(char * opts, opt_struct ** result)
|
||||
paras = safe_emalloc(sizeof(opt_struct), count, 0);
|
||||
memset(paras, 0, sizeof(opt_struct) * count);
|
||||
*result = paras;
|
||||
while ( (*opts >= 65 && *opts <= 90) ||
|
||||
(*opts >= 97 && *opts <= 122)
|
||||
while ( (*opts >= 48 && *opts <= 57) || /* 0 - 9 */
|
||||
(*opts >= 65 && *opts <= 90) || /* A - Z */
|
||||
(*opts >= 97 && *opts <= 122) /* a - z */
|
||||
) {
|
||||
paras->opt_char = *opts;
|
||||
paras->need_param = (*(++opts) == ':') ? 1 : 0;
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
--TEST--
|
||||
getopt#002
|
||||
--ARGS--
|
||||
-vvv -a value -1111 -2 -v
|
||||
--INI--
|
||||
register_argc_argv=On
|
||||
variables_order=GPS
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(getopt("2a:vcd1"));
|
||||
?>
|
||||
--EXPECT--
|
||||
array(4) {
|
||||
["v"]=>
|
||||
array(4) {
|
||||
[0]=>
|
||||
bool(false)
|
||||
[1]=>
|
||||
bool(false)
|
||||
[2]=>
|
||||
bool(false)
|
||||
[3]=>
|
||||
bool(false)
|
||||
}
|
||||
["a"]=>
|
||||
string(5) "value"
|
||||
[1]=>
|
||||
array(4) {
|
||||
[0]=>
|
||||
bool(false)
|
||||
[1]=>
|
||||
bool(false)
|
||||
[2]=>
|
||||
bool(false)
|
||||
[3]=>
|
||||
bool(false)
|
||||
}
|
||||
[2]=>
|
||||
bool(false)
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
--TEST--
|
||||
getopt#003
|
||||
--ARGS--
|
||||
-vvv --v -a value --another value -1111 -2 --12 --0 --0 --1 -v
|
||||
--INI--
|
||||
register_argc_argv=On
|
||||
variables_order=GPS
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(getopt("2a:vcd1", array("another:", 12, 0, 1, "v")));
|
||||
?>
|
||||
--EXPECT--
|
||||
array(7) {
|
||||
["v"]=>
|
||||
array(5) {
|
||||
[0]=>
|
||||
bool(false)
|
||||
[1]=>
|
||||
bool(false)
|
||||
[2]=>
|
||||
bool(false)
|
||||
[3]=>
|
||||
bool(false)
|
||||
[4]=>
|
||||
bool(false)
|
||||
}
|
||||
["a"]=>
|
||||
string(5) "value"
|
||||
["another"]=>
|
||||
string(5) "value"
|
||||
[1]=>
|
||||
array(5) {
|
||||
[0]=>
|
||||
bool(false)
|
||||
[1]=>
|
||||
bool(false)
|
||||
[2]=>
|
||||
bool(false)
|
||||
[3]=>
|
||||
bool(false)
|
||||
[4]=>
|
||||
bool(false)
|
||||
}
|
||||
[2]=>
|
||||
bool(false)
|
||||
[12]=>
|
||||
bool(false)
|
||||
[0]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
bool(false)
|
||||
[1]=>
|
||||
bool(false)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user