Annotation of 43BSDTahoe/man/man3/getopt.3, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1988 Regents of the University of California.
                      2: .\" All rights reserved.
                      3: .\"
                      4: .\" Redistribution and use in source and binary forms are permitted
                      5: .\" provided that the above copyright notice and this paragraph are
                      6: .\" duplicated in all such forms and that any documentation,
                      7: .\" advertising materials, and other materials related to such
                      8: .\" distribution and use acknowledge that the software was developed
                      9: .\" by the University of California, Berkeley.  The name of the
                     10: .\" University may not be used to endorse or promote products derived
                     11: .\" from this software without specific prior written permission.
                     12: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                     13: .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                     14: .\" WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     15: .\"
                     16: .\"    @(#)getopt.3    6.8 (Berkeley) 7/9/88
                     17: .\"
                     18: .TH GETOPT 3 "July 9, 1988"
                     19: .UC 6
                     20: .SH NAME
                     21: getopt \- get option letter from argv
                     22: .SH SYNOPSIS
                     23: .ft B
                     24: int getopt(argc, argv, optstring)
                     25: .br
                     26: int argc;
                     27: .br
                     28: char **argv;
                     29: .br
                     30: char *optstring;
                     31: .sp
                     32: extern char *optarg;
                     33: .br
                     34: extern int optind;
                     35: .br
                     36: extern int opterr;
                     37: .ft
                     38: .SH DESCRIPTION
                     39: .I Getopt
                     40: returns the next option letter in
                     41: .I argv
                     42: that matches a letter in
                     43: .IR optstring .
                     44: .I Optstring
                     45: is a string of recognized option letters;
                     46: if a letter is followed by a colon, the option is expected to have
                     47: an argument that may or may not be separated from it by white space.
                     48: .I Optarg
                     49: is set to point to the start of the option argument on return from
                     50: .IR getopt .
                     51: .PP
                     52: .I Getopt
                     53: places in
                     54: .I optind
                     55: the
                     56: .I argv
                     57: index of the next argument to be processed.
                     58: Because
                     59: .I optind
                     60: is external, it is normally initialized to zero automatically
                     61: before the first call to 
                     62: .IR getopt .
                     63: .PP
                     64: When all options have been processed (i.e., up to the first
                     65: non-option argument),
                     66: .I getopt
                     67: returns
                     68: .BR EOF .
                     69: The special option
                     70: .B \-\-
                     71: may be used to delimit the end of the options;
                     72: .B EOF
                     73: will be returned, and
                     74: .B \-\-
                     75: will be skipped.
                     76: .SH DIAGNOSTICS
                     77: .I Getopt
                     78: prints an error message on
                     79: .I stderr
                     80: and returns a question mark
                     81: .RB ( ? )
                     82: when it encounters an option letter not included in
                     83: .IR optstring .
                     84: Setting \fIopterr\fP to a zero will disable this error message.
                     85: .SH EXAMPLE
                     86: The following code fragment shows how one might process the arguments
                     87: for a command that can take the mutually exclusive options
                     88: .B a
                     89: and
                     90: .BR b ,
                     91: and the options
                     92: .B f
                     93: and
                     94: .BR o ,
                     95: both of which require arguments:
                     96: .PP
                     97: .RS
                     98: .nf
                     99: main(argc, argv)
                    100: int argc;
                    101: char **argv;
                    102: {
                    103:        int c;
                    104:        extern int optind;
                    105:        extern char *optarg;
                    106:        \&.
                    107:        \&.
                    108:        \&.
                    109:        while ((c = getopt(argc, argv, "abf:o:")) != EOF)
                    110:                switch (c) {
                    111:                case `a':
                    112:                        if (bflg)
                    113:                                errflg++;
                    114:                        else
                    115:                                aflg++;
                    116:                        break;
                    117:                case `b':
                    118:                        if (aflg)
                    119:                                errflg++;
                    120:                        else
                    121:                                bproc();
                    122:                        break;
                    123:                case `f':
                    124:                        ifile = optarg;
                    125:                        break;
                    126:                case `o':
                    127:                        ofile = optarg;
                    128:                        break;
                    129:                case `?':
                    130:                default:
                    131:                        errflg++;
                    132:                        break;
                    133:                }
                    134:        if (errflg) {
                    135:                fprintf(stderr, "Usage: ...");
                    136:                exit(2);
                    137:        }
                    138:        for (; optind < argc; optind++) {
                    139:                \&.
                    140:                \&.
                    141:                \&.
                    142:        }
                    143:        \&.
                    144:        \&.
                    145:        \&.
                    146: }
                    147: .RE
                    148: .SH HISTORY
                    149: Written by Henry Spencer, working from a Bell Labs manual page.
                    150: Modified by Keith Bostic to behave more like the System V version.
                    151: .SH BUGS
                    152: ``-'' may be specified as an option letter, however it should never have
                    153: an argument associated with it.  This allows getopt to be used with
                    154: programs that think that ``-'' means standard input.
                    155: .PP
                    156: Option arguments are allowed to begin with ``\-'';
                    157: this is reasonable but reduces the amount of error checking possible.
                    158: .PP
                    159: .I Getopt
                    160: is quite flexible but the obvious price must be paid:  there is much
                    161: it could do that it doesn't, like
                    162: checking mutually exclusive options, checking type of
                    163: option arguments, etc.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.