From: Johannes Schlüter Date: Thu, 22 Mar 2007 21:35:41 +0000 (+0000) Subject: - MFH: Fix handling of not existing long CLI options X-Git-Tag: php-5.2.2RC1~110 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d95939d566fcacc991543fbcc0ebefd5d69efbf5;p=php - MFH: Fix handling of not existing long CLI options --- diff --git a/sapi/cli/getopt.c b/sapi/cli/getopt.c index 8634003dae..963c4554e1 100644 --- a/sapi/cli/getopt.c +++ b/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; } diff --git a/sapi/cli/tests/015.phpt b/sapi/cli/tests/015.phpt new file mode 100644 index 0000000000..e5c0ab0259 --- /dev/null +++ b/sapi/cli/tests/015.phpt @@ -0,0 +1,30 @@ +--TEST-- +CLI long options +--SKIPIF-- + +--FILE-- + +--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] [--] [args...] +Done