Loading...
stdlib/FreeBSD/getopt.3 Libc-498 Libc-320
--- Libc/Libc-498/stdlib/FreeBSD/getopt.3
+++ Libc/Libc-320/stdlib/FreeBSD/getopt.3
@@ -1,5 +1,3 @@
-.\"	$NetBSD: getopt.3,v 1.31 2003/09/23 10:26:54 wiz Exp $
-.\"
 .\" Copyright (c) 1988, 1991, 1993
 .\"	The Regents of the University of California.  All rights reserved.
 .\"
@@ -32,7 +30,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"     @(#)getopt.3	8.5 (Berkeley) 4/27/95
-.\" $FreeBSD: src/lib/libc/stdlib/getopt.3,v 1.25 2004/07/31 01:00:50 imp Exp $
+.\" $FreeBSD: src/lib/libc/stdlib/getopt.3,v 1.21 2002/12/04 18:57:45 ru Exp $
 .\"
 .Dd April 27, 1995
 .Dt GETOPT 3
@@ -45,12 +43,12 @@
 .Sh SYNOPSIS
 .In unistd.h
 .Vt extern char *optarg ;
-.Vt extern int optind ;
-.Vt extern int optopt ;
-.Vt extern int opterr ;
-.Vt extern int optreset ;
+.Vt extern int   optind ;
+.Vt extern int   optopt ;
+.Vt extern int   opterr ;
+.Vt extern int   optreset ;
 .Ft int
-.Fn getopt "int argc" "char * const argv[]" "const char *optstring"
+.Fn getopt "int argc" "char * const *argv" "const char *optstring"
 .Sh DESCRIPTION
 The
 .Fn getopt
@@ -99,7 +97,7 @@
 option character returned by
 .Fn getopt .
 .Pp
-The variables
+The variable
 .Va opterr
 and
 .Va optind
@@ -124,7 +122,12 @@
 .Pp
 The
 .Fn getopt
-function returns \-1 when the argument list is exhausted.
+function
+returns \-1
+when the argument list is exhausted, or
+.Ql ?\&
+if a non-recognized
+option is encountered.
 The interpretation of options in the argument list may be cancelled
 by the option
 .Ql --
@@ -135,96 +138,61 @@
 argument),
 .Fn getopt
 returns \-1.
-.Sh RETURN VALUES
-The
-.Fn getopt
-function returns the next known option character in
-.Fa optstring .
+.Sh DIAGNOSTICS
+If the
+.Fn getopt
+function encounters a character not found in the string
+.Va optstring
+or detects
+a missing option argument it writes an error message to the
+.Dv stderr
+and returns
+.Ql ?\& .
+Setting
+.Va opterr
+to a zero will disable these error messages.
 If
-.Fn getopt
-encounters a character not found in
-.Fa optstring
-or if it detects a missing option argument,
-it returns
-.Ql \&?
-(question mark).
-If
-.Fa optstring
+.Va optstring
 has a leading
 .Ql \&:
-then a missing option argument causes
+then a missing option argument causes a
 .Ql \&:
-to be returned instead of
-.Ql \&? .
-In either case, the variable
-.Va optopt
-is set to the character that caused the error.
-The
-.Fn getopt
-function returns \-1 when the argument list is exhausted.
+to be returned in addition to suppressing any error messages.
+.Pp
+Option arguments are allowed to begin with
+.Dq Li \- ;
+this is reasonable but
+reduces the amount of error checking possible.
+.Sh EXTENSIONS
+The
+.Va optreset
+variable was added to make it possible to call the
+.Fn getopt
+function multiple times.
+This is an extension to the
+.St -p1003.2
+specification.
 .Sh EXAMPLES
 .Bd -literal -compact
-#include <unistd.h>
 int bflag, ch, fd;
 
 bflag = 0;
-while ((ch = getopt(argc, argv, "bf:")) != -1) {
+while ((ch = getopt(argc, argv, "bf:")) != -1)
 	switch (ch) {
 	case 'b':
 		bflag = 1;
 		break;
 	case 'f':
-		if ((fd = open(optarg, O_RDONLY, 0)) \*[Lt] 0) {
-			(void)fprintf(stderr,
-			    "myname: %s: %s\en", optarg, strerror(errno));
-			exit(1);
-		}
+		if ((fd = open(optarg, O_RDONLY, 0)) < 0)
+			err(1, "%s", optarg);
 		break;
 	case '?':
 	default:
 		usage();
 	}
-}
 argc -= optind;
 argv += optind;
 .Ed
-.Sh DIAGNOSTICS
-If the
-.Fn getopt
-function encounters a character not found in the string
-.Fa optstring
-or detects
-a missing option argument it writes an error message to the
-.Dv stderr
-and returns
-.Ql \&? .
-Setting
-.Va opterr
-to a zero will disable these error messages.
-If
-.Fa optstring
-has a leading
-.Ql \&:
-then a missing option argument causes a
-.Ql \&:
-to be returned in addition to suppressing any error messages.
-.Pp
-Option arguments are allowed to begin with
-.Dq Li \- ;
-this is reasonable but reduces the amount of error checking possible.
-.Sh SEE ALSO
-.Xr getopt 1 ,
-.Xr getopt_long 3 ,
-.Xr getsubopt 3
-.Sh STANDARDS
-The
-.Va optreset
-variable was added to make it possible to call the
-.Fn getopt
-function multiple times.
-This is an extension to the
-.St -p1003.2
-specification.
 .Sh HISTORY
 The
 .Fn getopt
@@ -241,7 +209,7 @@
 to decouple
 .Fn getopt
 from
-.In stdio.h .
+.Pa <stdio.h> .
 .Pp
 A single dash
 .Dq Li -
@@ -258,20 +226,10 @@
 This practice is wrong, and should not be used in any current development.
 It is provided for backward compatibility
 .Em only .
-Care should be taken not to use
-.Ql \&-
-as the first character in
-.Fa optstring
-to avoid a semantic conflict with
-.Tn GNU
-.Fn getopt ,
-which assigns different meaning to an
-.Fa optstring
-that begins with a
-.Ql \&- .
 By default, a single dash causes
 .Fn getopt
 to return \-1.
+This is, we believe, compatible with System V.
 .Pp
 It is also possible to handle digits as option letters.
 This allows
@@ -282,10 +240,9 @@
 This practice is wrong, and should not be used in any current development.
 It is provided for backward compatibility
 .Em only .
-The following code fragment works in most cases.
+The following code fragment works in most (but not all) cases.
 .Bd -literal -offset indent
-int ch;
-long length;
+int length;
 char *p, *ep;
 
 while ((ch = getopt(argc, argv, "0123456789")) != -1)
@@ -293,17 +250,16 @@
 	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] == '-' \*[Am]\*[Am] p[1] == ch \*[Am]\*[Am] !p[2]) {
-			length = ch - '0';
-			ep = "";
-		} else if (argv[optind] \*[Am]\*[Am] argv[optind][1] == ch) {
+		if (p[0] == '-' && p[1] == ch && !p[2])
+			length = strtol(++p, &ep, 10);
+		else if (argv[optind] && argv[optind][1] == ch) {
 			length = strtol((p = argv[optind] + 1),
-			    \*[Am]ep, 10);
+			    &ep, 10);
 			optind++;
 			optreset = 1;
 		} else
 			usage();
-		if (*ep != '\e0')
+		if (*ep != '\0')
 			errx(EX_USAGE, "illegal number -- %s", p);
 		break;
 	}