parameter that has space in it, both in getopt.c and in the manpage example. 2) Fix the example in the manpage. The set(1) command is required to return 0 (POSIX 1003.2, section 3.14.11), so you can't test for getopt's exit status like the example did: #! /bin/sh set -- `getopt abo: $*` if test $? != 0 # wrong, tests for set's exit status, which is # always zero, no for getopt(1)'s. Fixes PR bin/5845, which thought it was getopt's fault, but in fact the manpage was wrong. I also updated the example to be more useful and updated the BUGS section. PR: bin/5845
31 lines
558 B
C
31 lines
558 B
C
#include <stdio.h>
|
|
|
|
main(argc, argv)
|
|
int argc;
|
|
char *argv[];
|
|
{
|
|
extern int optind;
|
|
extern char *optarg;
|
|
int c;
|
|
int status = 0;
|
|
|
|
optind = 2; /* Past the program name and the option letters. */
|
|
while ((c = getopt(argc, argv, argv[1])) != -1)
|
|
switch (c) {
|
|
case '?':
|
|
status = 1; /* getopt routine gave message */
|
|
break;
|
|
default:
|
|
if (optarg != NULL)
|
|
printf(" -%c '%s'", c, optarg);
|
|
else
|
|
printf(" -%c", c);
|
|
break;
|
|
}
|
|
printf(" --");
|
|
for (; optind < argc; optind++)
|
|
printf(" %s", argv[optind]);
|
|
printf("\n");
|
|
exit(status);
|
|
}
|