mirror of
https://github.com/php/php-src.git
synced 2024-09-22 18:37:25 +00:00
MFB: sync getopt from CLI
This commit is contained in:
parent
e2cf497a61
commit
fd9af91146
@ -16,6 +16,8 @@
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
@ -77,30 +79,35 @@ 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;
|
||||
}
|
||||
}
|
||||
optchr = 0;
|
||||
dash = 1;
|
||||
dash = 0;
|
||||
arg_start = 2 + strlen(opts[opts_idx].opt_name);
|
||||
}
|
||||
} else {
|
||||
if (!dash) {
|
||||
dash = 1;
|
||||
optchr = 1;
|
||||
}
|
||||
|
||||
/* Check if the guy tries to do a -: kind of flag */
|
||||
if (argv[*optind][optchr] == ':') {
|
||||
dash = 0;
|
||||
(*optind)++;
|
||||
return (php_opt_error(argc, argv, *optind-1, optchr, OPTERRCOLON, show_err));
|
||||
}
|
||||
}
|
||||
if (opts_idx < 0) {
|
||||
while (1) {
|
||||
opts_idx++;
|
||||
|
@ -16,8 +16,17 @@
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
#include "php.h"
|
||||
|
||||
#ifdef NETWARE
|
||||
/*
|
||||
As NetWare LibC has optind and optarg macros defined in unistd.h our local variables were getting mistakenly preprocessed so undeffing optind and optarg
|
||||
*/
|
||||
#undef optarg
|
||||
#undef optind
|
||||
#endif
|
||||
/* Define structure for one recognized option (both single char and long name).
|
||||
* If short_open is '-' this is the last option.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user