119 lines
4.1 KiB
Groff
119 lines
4.1 KiB
Groff
|
||
|
||
GETOPT(3) Minix Programmer's Manual GETOPT(3)
|
||
|
||
|
||
NAME
|
||
getopt - get option letter from argv
|
||
|
||
SYNOPSIS
|
||
int getopt(argc, argv, optstring)
|
||
int argc;
|
||
char **argv;
|
||
char *optstring;
|
||
|
||
extern char *optarg;
|
||
extern int optind;
|
||
|
||
DESCRIPTION
|
||
Getopt returns the next option letter in argv that matches a letter in
|
||
optstring. Optstring is a string of recognized option letters; if a
|
||
letter is followed by a colon, the option is expected to have an argument
|
||
that may or may not be separated from it by white space. Optarg is set
|
||
to point to the start of the option argument on return from getopt.
|
||
|
||
Getopt places in optind the argv index of the next argument to be
|
||
processed. Because optind is external, it is normally initialized to
|
||
zero automatically before the first call to getopt.
|
||
|
||
When all options have been processed (i.e., up to the first non-option
|
||
argument), getopt returns EOF. The special option -- may be used to
|
||
delimit the end of the options; EOF will be returned, and -- will be
|
||
skipped.
|
||
|
||
DIAGNOSTICS
|
||
Getopt prints an error message on stderr and returns a question mark (?)
|
||
when it encounters an option letter not included in optstring.
|
||
|
||
EXAMPLE
|
||
The following code fragment shows how one might process the arguments for
|
||
a command that can take the mutually exclusive options a and b, and the
|
||
options f and o, both of which require arguments:
|
||
|
||
main(argc, argv)
|
||
int argc;
|
||
char **argv;
|
||
{
|
||
int c;
|
||
extern int optind;
|
||
extern char *optarg;
|
||
.
|
||
.
|
||
.
|
||
while ((c = getopt(argc, argv, "abf:o:")) != EOF)
|
||
switch (c) {
|
||
case `a':
|
||
|
||
|
||
6BSD May 27, 1986 1
|
||
|
||
|
||
|
||
GETOPT(3) Minix Programmer's Manual GETOPT(3)
|
||
|
||
|
||
if (bflg)
|
||
errflg++;
|
||
else
|
||
aflg++;
|
||
break;
|
||
case `b':
|
||
if (aflg)
|
||
errflg++;
|
||
else
|
||
bproc();
|
||
break;
|
||
case `f':
|
||
ifile = optarg;
|
||
break;
|
||
case `o':
|
||
ofile = optarg;
|
||
break;
|
||
case `?':
|
||
default:
|
||
errflg++;
|
||
break;
|
||
}
|
||
if (errflg) {
|
||
fprintf(stderr, "Usage: ...");
|
||
exit(2);
|
||
}
|
||
for (; optind < argc; optind++) {
|
||
.
|
||
.
|
||
.
|
||
}
|
||
.
|
||
.
|
||
.
|
||
}
|
||
|
||
HISTORY
|
||
Written by Henry Spencer, working from a Bell Labs manual page. Modified
|
||
by Keith Bostic to behave more like the System V version.
|
||
|
||
BUGS
|
||
It is not obvious how `-' standing alone should be treated; this version
|
||
treats it as a non-option argument, which is not always right.
|
||
|
||
Option arguments are allowed to begin with `-'; this is reasonable but
|
||
reduces the amount of error checking possible.
|
||
|
||
Getopt is quite flexible but the obvious price must be paid: there is
|
||
much it could do that it doesn't, like checking mutually exclusive
|
||
options, checking type of option arguments, etc.
|
||
|
||
|
||
6BSD May 27, 1986 2
|
||
|