GETOPT.3
上传用户:jnzhq888
上传日期:2007-01-18
资源大小:51694k
文件大小:3k
- ." Copyright (c) 1985 Regents of the University of California.
- ." All rights reserved. The Berkeley software License Agreement
- ." specifies the terms and conditions for redistribution.
- ."
- ." @(#)getopt.3 6.4 (Berkeley) 5/27/86
- ."
- .TH GETOPT 3 "May 27, 1986"
- .UC 6
- .SH NAME
- getopt - get option letter from argv
- .SH SYNOPSIS
- .ft B
- int getopt(argc, argv, optstring)
- .br
- int argc;
- .br
- char **argv;
- .br
- char *optstring;
- .sp
- extern char *optarg;
- .br
- extern int optind;
- .ft
- .SH DESCRIPTION
- .I Getopt
- returns the next option letter in
- .I argv
- that matches a letter in
- .IR optstring .
- .I 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.
- .I Optarg
- is set to point to the start of the option argument on return from
- .IR getopt .
- .PP
- .I Getopt
- places in
- .I optind
- the
- .I argv
- index of the next argument to be processed.
- Because
- .I optind
- is external, it is normally initialized to zero automatically
- before the first call to
- .IR getopt .
- .PP
- When all options have been processed (i.e., up to the first
- non-option argument),
- .I getopt
- returns
- .BR EOF .
- The special option
- .B --
- may be used to delimit the end of the options;
- .B EOF
- will be returned, and
- .B --
- will be skipped.
- .SH DIAGNOSTICS
- .I Getopt
- prints an error message on
- .I stderr
- and returns a question mark
- .RB ( ? )
- when it encounters an option letter not included in
- .IR optstring .
- .SH EXAMPLE
- The following code fragment shows how one might process the arguments
- for a command that can take the mutually exclusive options
- .B a
- and
- .BR b ,
- and the options
- .B f
- and
- .BR o ,
- both of which require arguments:
- .PP
- .RS
- .nf
- 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':
- 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++) {
- &.
- &.
- &.
- }
- &.
- &.
- &.
- }
- .RE
- .SH HISTORY
- Written by Henry Spencer, working from a Bell Labs manual page.
- Modified by Keith Bostic to behave more like the System V version.
- .SH 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.
- .PP
- Option arguments are allowed to begin with `-';
- this is reasonable but reduces the amount of error checking possible.
- .PP
- .I 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.