Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
GETOPT(3)		 BSD Library Functions Manual		     GETOPT(3)

NAME
     getopt -- get option letter from argv

SYNOPSIS
     #include <stdlib.h>

     extern char *optarg
     extern int	optind
     extern int	opterr

     int
     getopt(int	argc, char * const *argv, const	char *optstring);

DESCRIPTION
     The getopt() function gets	the next known option character	from argv.  An
     option character is known if it has been specified	in the string of ac-
     cepted option characters, optstring.

     The option	string optstring may contain the following characters; letters
     and letters followed by a colon to	indicate an option argument is to fol-
     low. It does not matter to	getopt() if a following	argument has leading
     white space.

     On	return from getopt(), optarg points to an option argument, if it is
     anticipated, and the variable optind contains the index to	the next argv
     argument for a subsequent call to getopt().

     The variable opterr and optind are	both initialized to 1.	In order to
     use getopt() to evaluate multiple sets of arguments, or to	evaluate a
     single set	of arguments multiple times, optind must be initialized	to the
     number of argv entries to be skipped in each evaluation.

     The getopt() function returns an EOF when the argument list is exhausted,
     or	a non-recognized option	is encountered.	 The interpretation of options
     in	the argument list may be cancelled by the option `--' (double dash)
     which causes getopt() to signal the end of	argument processing and	return
     an	EOF.  When all options have been processed (i.e., up to	the first non-
     option argument), getopt()	returns	EOF.

DIAGNOSTICS
     If	the getopt() function encounters a character not found in the string
     optarg or detects a missing option	argument it writes error message `'?
     to	the stderr.  Setting opterr to a zero will disable these error mes-
     sages.

EXAMPLE
     extern char *optarg;
     extern int	optind;
     int bflag,	ch, fd;

     bflag = 0;
     while ((ch	= getopt(argc, argv, "bf:")) !=	EOF)
	     switch(ch)	{
	     case 'b':
		     bflag = 1;
		     break;
	     case 'f':
		     if	((fd = open(optarg, O_RDONLY, 0)) < 0) {
			     (void)fprintf(stderr,
				     "myname: unable to	read file %s.\n", optarg);
			     exit(1) ;
		     }
		     break;
	     case '?':
	     default:
		     usage();
     }
     argc -= optind;
     argv += optind;

HISTORY
     The getopt() function appeared 4.3BSD.

BUGS
     Option arguments are allowed to begin with	"-"; this is reasonable	but
     reduces the amount	of error checking possible.

     A single dash "-" may be specified	as an character	in optstring, however
     it	should never have an argument associated with it.  This	allows
     getopt() to be used with programs that expect "-" as an option flag.
     This practice is wrong, and should	not be used in any current develop-
     ment.  It is provided for backward	compatibility only.  By	default, a
     single dash causes	getopt() to return EOF.	 This is, we believe, compati-
     ble with System V.

     It	is also	possible to handle digits as option letters.  This allows
     getopt() to be used with programs that expect a number ("-3") as an op-
     tion.  This practice is wrong, and	should not be used in any current de-
     velopment.	 It is provided	for backward compatibility only.  The follow-
     ing code fragment works fairly well.

	   int length;
	   char	*p;

	   while ((c = getopt(argc, argv, "0123456789")) != EOF)
		   switch (c) {
		   case	'0': case '1': case '2': case '3': case	'4':
		   case	'5': case '6': case '7': case '8': case	'9':
			   p = argv[optind - 1];
			   if (p[0] == '-' && p[1] == ch && !p[2])
				   length = atoi(++p);
			   else
				   length = atoi(argv[optind] +	1);
			   break;
		   }
	   }

4.3 Berkeley Distribution	April 19, 1991	     4.3 Berkeley Distribution

NAME | SYNOPSIS | DESCRIPTION | DIAGNOSTICS | EXAMPLE | HISTORY | BUGS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=getopt&sektion=3&manpath=4.3BSD+NET%2f2>

home | help