Browse Source

- MFH: Fix handling of not existing long CLI options

experimental/5.2-WITH_DRCP
Johannes Schlüter 20 years ago
parent
commit
d95939d566
  1. 7
      sapi/cli/getopt.c
  2. 30
      sapi/cli/tests/015.phpt

7
sapi/cli/getopt.c

@ -79,11 +79,16 @@ int php_getopt(int argc, char* const *argv, const opt_struct opts[], char **opta
}
if ((argv[*optind][0] == '-') && (argv[*optind][1] == '-')) {
/* '--' indicates end of args if not followed by a known long option name */
if (argv[*optind][2] == '\0') {
(*optind)++;
return(EOF);
}
while (1) {
opts_idx++;
if (opts[opts_idx].opt_char == '-') {
(*optind)++;
return(EOF);
return(php_opt_error(argc, argv, *optind-1, optchr, OPTERRARG, show_err));
} else if (opts[opts_idx].opt_name && !strcmp(&argv[*optind][2], opts[opts_idx].opt_name)) {
break;
}

30
sapi/cli/tests/015.phpt

@ -0,0 +1,30 @@
--TEST--
CLI long options
--SKIPIF--
<?php include "skipif.inc"; ?>
--FILE--
<?php
$php = getenv('TEST_PHP_EXECUTABLE');
echo `"$php" --version | grep built:`;
echo `echo "<?php print_r(\\\$argv);" | "$php" -- foo bar baz`, "\n";
echo `"$php" --version foo bar baz | grep built:`;
echo `"$php" --notexisting foo bar baz | grep Usage:`;
echo "Done\n";
?>
--EXPECTF--
PHP %d.%d.%d%s(cli) (built: %s)
Array
(
[0] => -
[1] => foo
[2] => bar
[3] => baz
)
PHP %d.%d.%d%s(cli) (built: %s)
Usage: php [options] [-f] <file> [--] [args...]
Done
Loading…
Cancel
Save