Annotation of 43BSDReno/lib/libc/gen/getopt.3, revision 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 provided
        !             5: .\" that: (1) source distributions retain this entire copyright notice and
        !             6: .\" comment, and (2) distributions including binaries display the following
        !             7: .\" acknowledgement:  ``This product includes software developed by the
        !             8: .\" University of California, Berkeley and its contributors'' in the
        !             9: .\" documentation or other materials provided with the distribution and in
        !            10: .\" all advertising materials mentioning features or use of this software.
        !            11: .\" Neither the name of the University nor the names of its contributors may
        !            12: .\" be used to endorse or promote products derived from this software without
        !            13: .\" specific prior written permission.
        !            14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
        !            15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
        !            16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
        !            17: .\"
        !            18: .\"    @(#)getopt.3    6.15 (Berkeley) 6/23/90
        !            19: .\"
        !            20: .TH GETOPT 3 "June 23, 1990"
        !            21: .UC 6
        !            22: .SH NAME
        !            23: getopt \- get option letter from argv
        !            24: .SH SYNOPSIS
        !            25: .ft B
        !            26: .nf
        !            27: int getopt(argc, argv, optstring)
        !            28: int argc;
        !            29: char **argv;
        !            30: char *optstring;
        !            31: .sp
        !            32: extern char *optarg;
        !            33: extern int optind;
        !            34: extern int opterr;
        !            35: .ft
        !            36: .SH DESCRIPTION
        !            37: .I Getopt
        !            38: returns the next option letter in
        !            39: .I argv
        !            40: that matches a letter in
        !            41: .IR optstring .
        !            42: .I Optstring
        !            43: is a string of recognized option letters; if a letter is followed by a
        !            44: colon, the option is expected to have an argument that may or may not
        !            45: be separated from it by white space.
        !            46: .PP
        !            47: On return from
        !            48: .IR getopt ,
        !            49: optarg is set to point to the start of any option argument.
        !            50: .I Optind
        !            51: contains the
        !            52: .I argv
        !            53: index of the next argument to be processed.
        !            54: .PP
        !            55: .I Opterr
        !            56: and
        !            57: .I optind
        !            58: are both initialized to 1.
        !            59: In order to use
        !            60: .I getopt
        !            61: to evaluate multiple sets of arguments, or to evaluate a single set of
        !            62: arguments multiple times,
        !            63: .I optind
        !            64: must be initialized to the number of argv entries to be skipped in each
        !            65: evaluation.
        !            66: .PP
        !            67: When all options have been processed (i.e., up to the first non-option
        !            68: argument),
        !            69: .I getopt
        !            70: returns EOF.
        !            71: The special option ``\-\-'' may be used to delimit the end of the options;
        !            72: EOF will be returned, and the ``\-\-'' will be skipped.
        !            73: .SH DIAGNOSTICS
        !            74: .I Getopt
        !            75: prints an error message on
        !            76: .I stderr
        !            77: and returns a question mark (``?'') when it encounters an option
        !            78: letter not included in
        !            79: .IR optstring ,
        !            80: or it encounters an option that requires an argument which is not
        !            81: supplied.
        !            82: Setting
        !            83: .I opterr
        !            84: to a zero will disable these error messages.
        !            85: .SH EXAMPLE
        !            86: .nf
        !            87: .in +5
        !            88: extern char *optarg;
        !            89: extern int optind;
        !            90: int bflag, ch, fd;
        !            91: 
        !            92: bflag = 0;
        !            93: while ((ch = getopt(argc, argv, "bf:")) != EOF)
        !            94:        switch(ch) {
        !            95:        case 'b':
        !            96:                bflag = 1;
        !            97:                break;
        !            98:        case 'f':
        !            99:                if ((fd = open(optarg, O_RDONLY, 0)) < 0) {
        !           100:                        (void)fprintf(stderr,
        !           101:                            "myname: unable to read file %s.\en", optarg);
        !           102:                        exit(1);
        !           103:                }
        !           104:                break;
        !           105:        case '?':
        !           106:        default:
        !           107:                usage();
        !           108:        }
        !           109: argc -= optind;
        !           110: argv += optind;
        !           111: .fi
        !           112: .SH BUGS
        !           113: Option arguments are allowed to begin with ``\-''; this is reasonable but
        !           114: reduces the amount of error checking possible.
        !           115: .PP
        !           116: A single dash (``-'') may be specified as an character in
        !           117: .IR optstring ,
        !           118: however it should
        !           119: .B never
        !           120: have an argument associated with it.
        !           121: This allows
        !           122: .I getopt
        !           123: to be used with programs that expect ``-'' as an option flag.
        !           124: This practice is wrong, and should not be used in any current development.
        !           125: It is provided for backward compatibility
        !           126: .BR only .
        !           127: By default, a single dash causes
        !           128: .I getopt
        !           129: to return EOF.
        !           130: This is, we believe, compatible with System V.
        !           131: .PP
        !           132: It is also possible to handle digits as option letters.
        !           133: This allows
        !           134: .I getopt
        !           135: to be used with programs that expect a number (``-3'') as an option.
        !           136: This practice is wrong, and should not be used in any current development.
        !           137: It is provided for backward compatibility
        !           138: .BR only .
        !           139: The following code fragment works fairly well.
        !           140: .sp
        !           141: .nf
        !           142: .in +5
        !           143: int length;
        !           144: char *p;
        !           145: 
        !           146: while ((c = getopt(argc, argv, "0123456789")) != EOF)
        !           147:        switch (c) {
        !           148:        case '0': case '1': case '2': case '3': case '4':
        !           149:        case '5': case '6': case '7': case '8': case '9':
        !           150:                p = argv[optind - 1];
        !           151:                if (p[0] == '-' && p[1] == ch && !p[2])
        !           152:                        length = atoi(++p);
        !           153:                else
        !           154:                        length = atoi(argv[optind] + 1);
        !           155:                break;
        !           156:        }
        !           157: }
        !           158: .fi

unix.superglobalmegacorp.com

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