Available in

(1) (1)/es (1)/fr (1)/ja (1)/ko (1)/pl (3) (3)/de (3)/es (3)/fr (3)/ja (3)/pt (3c) (3posix)

TOC

getopt(3C)               Standard C Library Functions               getopt(3C)



NAME

       getopt - get option letter from argument vector

SYNOPSIS

       #include <stdlib.h>

       int getopt(int argc, char * const *argv, const char *optstring);
       extern char *optarg;
       extern int optind, opterr, optopt;


DESCRIPTION

       The  getopt()  function  returns  the  next  option letter in argv that
       matches a letter in optstring. It supports all the rules of the command
       syntax  standard (see intro(1)). Since all new commands are intended to
       adhere to the command syntax  standard,  they  should  use  getopts(1),
       getopt(3C)  or  getsubopt(3C)  to parse positional parameters and check
       for options that are legal for that command.

       The optstring argument must contain  the  option  letters  the  command
       using  getopt() will recognize; if a letter is followed by a colon, the
       option is expected to have an argument, or group  of  arguments,  which
       may be separated from it by white space.  The optarg argument is set to
       point to the start of the option argument on return from getopt().

       The getopt() function places in optind the argv index of the next argu-
       ment to be processed. optind is external and is initialized to 1 before
       the first call to getopt(). When all options have been processed  (that
       is,  up  to  the  first non-option argument), getopt() returns EOF. The
       special option "--" (two hyphens) may be used to delimit the end of the
       options;  when it is encountered, EOF is returned and "--"' is skipped.
       This is useful in delimiting non-option arguments that begin  with  "-"
       (hyphen).

RETURN VALUES

       The getopt() function prints an error message on the standard error and
       returns a "?" (question mark) when it encounters an option  letter  not
       included  in optstring or no argument after an option that expects one.
       This error message may be disabled by setting  opterr to 0.  The  value
       of the character that caused the error is in optopt.

USAGE

       If  the  application  is linked with -lintl, then messages printed from
       this function are in the native language specified by  the  LC_MESSAGES
       locale category; see setlocale(3C).

       The  getopt()  function  does  not fully check for mandatory arguments;
       that is, given an option string a:b  and  the  input  -a  -b,  getopt()
       assumes that -b is the mandatory argument to the -a option and not that
       -a is missing a mandatory argument.

       It is a violation of the command syntax  standard  (see  intro(1))  for
       options with arguments to be grouped with other options, as in cmd -abo
       filename , where a and b are options,  o is an option that requires  an
       argument,  and  filename  is the argument to o. Although this syntax is
       permitted in the current implementation, it should not be used  because
       it  may not be supported in future releases.  The correct syntax to use
       is:

              cmd -ab -o filename.


EXAMPLES

       Example 1: Example on how one might process the arguments  for  a  com-
       mand.

       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 option o, which requires an argument:



       #include <stdlib.h>
       #include <stdio.h>

       main (int argc, char **argv)
       {
          int c;
          extern char *optarg;
          extern int optind;
          int aflg = 0;
          int bflg = 0;
          int errflg = 0;
          char *ofile = NULL;

          while ((c = getopt(argc, argv, "abo:")) != EOF)
             switch (c) {
             case 'a':
                if (bflg)
                   errflg++;
                else
                   aflg++;
                break;
             case 'b':
                if (aflg)
                   errflg++;
                else
                   bflg++;
                break;
             case 'o':
                ofile = optarg;
                (void)printf("ofile = %s\n", ofile);
                break;
             case '?':
                errflg++;
             }
          if (errflg) {
             (void)fprintf(stderr,
                "usage: cmd [-a|-b] [-o <filename>] files...\n");
             exit (2);
              }
              for ( ; optind < argc; optind++)
            (void)printf("%s\n", argv[optind]);
          return 0;
       }


ATTRIBUTES

       See attributes(5) for descriptions of the following attributes:


       +-----------------------------+-----------------------------+
       |      ATTRIBUTE TYPE         |      ATTRIBUTE VALUE        |
       +-----------------------------+-----------------------------+
       |MT-Level                     |Unsafe                       |
       +-----------------------------+-----------------------------+

SEE ALSO

       intro(1),  getopt(1),  getopts(1),  getsubopt(3C),  gettext(3C), setlo-
       cale(3C), attributes(5)



SunOS 5.9                         15 May 2001                       getopt(3C)

COMMENTS

Add your comment here. Whitespace and linebreaks are preserved. URLs are linked automatically.
CAPTCHA

No HTML allowed. URLs will be linked with nofollow attribute. Whitespace is preserved.