61 const char *optstring,
62 const struct option *longopts,
int *longindex)
64 static char *place =
EMSG;
66 static int nonopt_start = -1;
67 static bool force_nonopt =
false;
71 char **
args = (
char **) argv;
96 if (force_nonopt || place[0] !=
'-' || place[1] ==
'\0')
100 args[argc - 1] = place;
102 if (nonopt_start == -1)
103 nonopt_start = argc - 1;
112 if (place[0] ==
'-' && place[1] ==
'\0')
120 if (place[0] ==
'-' && place[1])
128 namelen = strcspn(place,
"=");
129 for (
i = 0; longopts[
i].
name != NULL;
i++)
131 if (strlen(longopts[
i].
name) == namelen
132 && strncmp(place, longopts[
i].
name, namelen) == 0)
138 if (place[namelen] ==
'=')
139 optarg = place + namelen + 1;
140 else if (
optind < argc - 1 &&
148 if (optstring[0] ==
':')
153 "%s: option requires an argument -- %s\n",
167 if (place[namelen] != 0)
180 if (longopts[
i].
flag == NULL)
181 return longopts[
i].
val;
190 if (
opterr && optstring[0] !=
':')
192 "%s: illegal option -- %s\n", argv[0], place);
202 oli = strchr(optstring,
optopt);
207 if (
opterr && *optstring !=
':')
209 "%s: illegal option -- %c\n", argv[0],
optopt);
223 else if (argc <= ++
optind)
226 if (*optstring ==
':')
230 "%s: option requires an argument -- %c\n",
#define fprintf(file, fmt, msg)
int getopt_long(int argc, char *const argv[], const char *optstring, const struct option *longopts, int *longindex)
#define required_argument
PGDLLIMPORT char * optarg