summaryrefslogtreecommitdiffstats
path: root/lib/libc/stdlib/getopt_long.3
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/stdlib/getopt_long.3')
-rw-r--r--lib/libc/stdlib/getopt_long.3506
1 files changed, 0 insertions, 506 deletions
diff --git a/lib/libc/stdlib/getopt_long.3 b/lib/libc/stdlib/getopt_long.3
deleted file mode 100644
index 72f6534..0000000
--- a/lib/libc/stdlib/getopt_long.3
+++ /dev/null
@@ -1,506 +0,0 @@
-.\" $OpenBSD: getopt_long.3,v 1.10 2004/01/06 23:44:28 fgsch Exp $
-.\" $NetBSD: getopt_long.3,v 1.14 2003/08/07 16:43:40 agc Exp $
-.\"
-.\" Copyright (c) 1988, 1991, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)getopt.3 8.5 (Berkeley) 4/27/95
-.\" $FreeBSD$
-.\"
-.Dd April 1, 2000
-.Dt GETOPT_LONG 3
-.Os
-.Sh NAME
-.Nm getopt_long ,
-.Nm getopt_long_only
-.Nd get long options from command line argument list
-.Sh LIBRARY
-.Lb libc
-.Sh SYNOPSIS
-.In getopt.h
-.Vt extern char *optarg ;
-.Vt extern int optind ;
-.Vt extern int optopt ;
-.Vt extern int opterr ;
-.Vt extern int optreset ;
-.Ft int
-.Fo getopt_long
-.Fa "int argc" "char * const *argv" "const char *optstring"
-.Fa "const struct option *longopts" "int *longindex"
-.Fc
-.Ft int
-.Fo getopt_long_only
-.Fa "int argc" "char * const *argv" "const char *optstring"
-.Fa "const struct option *longopts" "int *longindex"
-.Fc
-.Sh DESCRIPTION
-The
-.Fn getopt_long
-function is similar to
-.Xr getopt 3
-but it accepts options in two forms: words and characters.
-The
-.Fn getopt_long
-function provides a superset of the functionality of
-.Xr getopt 3 .
-The
-.Fn getopt_long
-function
-can be used in two ways.
-In the first way, every long option understood
-by the program has a corresponding short option, and the option
-structure is only used to translate from long options to short
-options.
-When used in this fashion,
-.Fn getopt_long
-behaves identically to
-.Xr getopt 3 .
-This is a good way to add long option processing to an existing program
-with the minimum of rewriting.
-.Pp
-In the second mechanism, a long option sets a flag in the
-.Vt option
-structure passed, or will store a pointer to the command line argument
-in the
-.Vt option
-structure passed to it for options that take arguments.
-Additionally,
-the long option's argument may be specified as a single argument with
-an equal sign, e.g.,
-.Pp
-.Dl "myprogram --myoption=somevalue"
-.Pp
-When a long option is processed, the call to
-.Fn getopt_long
-will return 0.
-For this reason, long option processing without
-shortcuts is not backwards compatible with
-.Xr getopt 3 .
-.Pp
-It is possible to combine these methods, providing for long options
-processing with short option equivalents for some options.
-Less
-frequently used options would be processed as long options only.
-.Pp
-The
-.Fn getopt_long
-call requires a structure to be initialized describing the long
-options.
-The structure is:
-.Bd -literal -offset indent
-struct option {
- char *name;
- int has_arg;
- int *flag;
- int val;
-};
-.Ed
-.Pp
-The
-.Va name
-field should contain the option name without the leading double dash.
-.Pp
-The
-.Va has_arg
-field should be one of:
-.Pp
-.Bl -tag -width ".Dv optional_argument" -offset indent -compact
-.It Dv no_argument
-no argument to the option is expect
-.It Dv required_argument
-an argument to the option is required
-.It Dv optional_argument
-an argument to the option may be presented.
-.El
-.Pp
-If
-.Va flag
-is not
-.Dv NULL ,
-then the integer pointed to by it will be set to the
-value in the
-.Va val
-field.
-If the
-.Va flag
-field is
-.Dv NULL ,
-then the
-.Va val
-field will be returned.
-Setting
-.Va flag
-to
-.Dv NULL
-and setting
-.Va val
-to the corresponding short option will make this function act just
-like
-.Xr getopt 3 .
-.Pp
-If the
-.Fa longindex
-field is not
-.Dv NULL ,
-then the integer pointed to by it will be set to the index of the long
-option relative to
-.Fa longopts .
-.Pp
-The last element of the
-.Fa longopts
-array has to be filled with zeroes.
-.Pp
-The
-.Fn getopt_long_only
-function behaves identically to
-.Fn getopt_long
-with the exception that long options may start with
-.Ql -
-in addition to
-.Ql -- .
-If an option starting with
-.Ql -
-does not match a long option but does match a single-character option,
-the single-character option is returned.
-.Sh RETURN VALUES
-If the
-.Fa flag
-field in
-.Vt "struct option"
-is
-.Dv NULL ,
-.Fn getopt_long
-and
-.Fn getopt_long_only
-return the value specified in the
-.Fa val
-field, which is usually just the corresponding short option.
-If
-.Fa flag
-is not
-.Dv NULL ,
-these functions return 0 and store
-.Fa val
-in the location pointed to by
-.Fa flag .
-These functions return
-.Ql \&:
-if there was a missing option argument,
-.Ql \&?
-if the user specified an unknown or ambiguous option, and
-\-1 when the argument list has been exhausted.
-.Sh ENVIRONMENT
-.Bl -tag -width ".Ev POSIXLY_CORRECT"
-.It Ev POSIXLY_CORRECT
-If set, option processing stops when the first non-option is found and
-a leading
-.Ql -
-or
-.Ql +
-in the
-.Fa optstring
-is ignored.
-.El
-.Sh EXAMPLES
-.Bd -literal -compact
-int bflag, ch, fd;
-int daggerset;
-
-/* options descriptor */
-static struct option longopts[] = {
- { "buffy", no_argument, NULL, 'b' },
- { "fluoride", required_argument, NULL, 'f' },
- { "daggerset", no_argument, \*[Am]daggerset, 1 },
- { NULL, 0, NULL, 0 }
-};
-
-bflag = 0;
-while ((ch = getopt_long(argc, argv, "bf:", longopts, NULL)) != -1)
- switch (ch) {
- case 'b':
- bflag = 1;
- break;
- case 'f':
- if ((fd = open(optarg, O_RDONLY, 0)) == -1)
- err(1, "unable to open %s", optarg);
- break;
- case 0:
- if (daggerset) {
- fprintf(stderr,"Buffy will use her dagger to "
- "apply fluoride to dracula's teeth\en");
- }
- break;
- default:
- usage();
-}
-argc -= optind;
-argv += optind;
-.Ed
-.Sh IMPLEMENTATION DIFFERENCES
-This section describes differences to the
-.Tn GNU
-implementation
-found in glibc-2.1.3:
-.Bl -bullet
-.\" .It
-.\" Handling of
-.\" .Ql -
-.\" as first char of option string in presence of
-.\" environment variable
-.\" .Ev POSIXLY_CORRECT :
-.\" .Bl -tag -width ".Bx"
-.\" .It Tn GNU
-.\" ignores
-.\" .Ev POSIXLY_CORRECT
-.\" and returns non-options as
-.\" arguments to option '\e1'.
-.\" .It Bx
-.\" honors
-.\" .Ev POSIXLY_CORRECT
-.\" and stops at the first non-option.
-.\" .El
-.\" .It
-.\" Handling of
-.\" .Ql -
-.\" within the option string (not the first character):
-.\" .Bl -tag -width ".Bx"
-.\" .It Tn GNU
-.\" treats a
-.\" .Ql -
-.\" on the command line as a non-argument.
-.\" .It Bx
-.\" a
-.\" .Ql -
-.\" within the option string matches a
-.\" .Ql -
-.\" (single dash) on the command line.
-.\" This functionality is provided for backward compatibility with
-.\" programs, such as
-.\" .Xr su 1 ,
-.\" that use
-.\" .Ql -
-.\" as an option flag.
-.\" This practice is wrong, and should not be used in any current development.
-.\" .El
-.\" .It
-.\" Handling of
-.\" .Ql ::
-.\" in options string in presence of
-.\" .Ev POSIXLY_CORRECT :
-.\" .Bl -tag -width ".Bx"
-.\" .It Both
-.\" .Tn GNU
-.\" and
-.\" .Bx
-.\" ignore
-.\" .Ev POSIXLY_CORRECT
-.\" here and take
-.\" .Ql ::
-.\" to
-.\" mean the preceding option takes an optional argument.
-.\" .El
-.\" .It
-.\" Return value in case of missing argument if first character
-.\" (after
-.\" .Ql +
-.\" or
-.\" .Ql - )
-.\" in option string is not
-.\" .Ql \&: :
-.\" .Bl -tag -width ".Bx"
-.\" .It Tn GNU
-.\" returns
-.\" .Ql \&?
-.\" .It Bx
-.\" returns
-.\" .Ql \&:
-.\" (since
-.\" .Bx Ns 's
-.\" .Fn getopt
-.\" does).
-.\" .El
-.\" .It
-.\" Handling of
-.\" .Ql --a
-.\" in getopt:
-.\" .Bl -tag -width ".Bx"
-.\" .It Tn GNU
-.\" parses this as option
-.\" .Ql - ,
-.\" option
-.\" .Ql a .
-.\" .It Bx
-.\" parses this as
-.\" .Ql -- ,
-.\" and returns \-1 (ignoring the
-.\" .Ql a ) .
-.\" (Because the original
-.\" .Fn getopt
-.\" does.)
-.\" .El
-.It
-Setting of
-.Va optopt
-for long options with
-.Va flag
-!=
-.Dv NULL :
-.Bl -tag -width ".Bx"
-.It Tn GNU
-sets
-.Va optopt
-to
-.Va val .
-.It Bx
-sets
-.Va optopt
-to 0 (since
-.Va val
-would never be returned).
-.El
-.\" .It
-.\" Handling of
-.\" .Ql -W
-.\" with
-.\" .Ql W;
-.\" in option string in
-.\" .Fn getopt
-.\" (not
-.\" .Fn getopt_long ) :
-.\" .Bl -tag -width ".Bx"
-.\" .It Tn GNU
-.\" causes a segfault.
-.\" .It Bx
-.\" no special handling is done;
-.\" .Ql W;
-.\" is interpreted as two separate options, neither of which take an argument.
-.\" .El
-.It
-Setting of
-.Va optarg
-for long options without an argument that are
-invoked via
-.Ql -W
-.Ql ( W;
-in option string):
-.Bl -tag -width ".Bx"
-.It Tn GNU
-sets
-.Va optarg
-to the option name (the argument of
-.Ql -W ) .
-.It Bx
-sets
-.Va optarg
-to
-.Dv NULL
-(the argument of the long option).
-.El
-.It
-Handling of
-.Ql -W
-with an argument that is not (a prefix to) a known
-long option
-.Ql ( W;
-in option string):
-.Bl -tag -width ".Bx"
-.It Tn GNU
-returns
-.Ql -W
-with
-.Va optarg
-set to the unknown option.
-.It Bx
-treats this as an error (unknown option) and returns
-.Ql \&?
-with
-.Va optopt
-set to 0 and
-.Va optarg
-set to
-.Dv NULL
-(as
-.Tn GNU Ns 's
-man page documents).
-.El
-.\" .It
-.\" The error messages are different.
-.It
-.Bx
-does not permute the argument vector at the same points in
-the calling sequence as
-.Tn GNU
-does.
-The aspects normally used by
-the caller (ordering after \-1 is returned, value of
-.Va optind
-relative
-to current positions) are the same, though.
-(We do fewer variable swaps.)
-.El
-.Sh SEE ALSO
-.Xr getopt 3
-.Sh HISTORY
-The
-.Fn getopt_long
-and
-.Fn getopt_long_only
-functions first appeared in the
-.Tn GNU
-libiberty library.
-The first
-.Bx
-implementation of
-.Fn getopt_long
-appeared in
-.Nx 1.5 ,
-the first
-.Bx
-implementation of
-.Fn getopt_long_only
-in
-.Ox 3.3 .
-.Fx
-first included
-.Fn getopt_long
-in
-.Fx 5.0 ,
-.Fn getopt_long_only
-in
-.Fx 5.2 .
-.Sh BUGS
-The
-.Fa argv
-argument is not really
-.Vt const
-as its elements may be permuted (unless
-.Ev POSIXLY_CORRECT
-is set).
-.Pp
-The implementation can completely replace
-.Xr getopt 3 ,
-but right now we are using separate code.
OpenPOWER on IntegriCloud