L4Re - L4 Runtime Environment
getopt.h
Go to the documentation of this file.
1 
5 /*
6  * (c) 2008-2009 Adam Lackorzynski <adam@os.inf.tu-dresden.de>,
7  * Alexander Warg <warg@os.inf.tu-dresden.de>
8  * economic rights: Technische Universit├Ąt Dresden (Germany)
9  * This file is part of TUD:OS and distributed under the terms of the
10  * GNU Lesser General Public License 2.1.
11  * Please see the COPYING-LGPL-2.1 file for details.
12  */
13 #ifndef _GETOPT_H
14 #define _GETOPT_H
15 
16 #ifndef NULL
17 #define NULL 0
18 #endif
19 
20 #include <l4/sys/compiler.h>
21 
23 
24 /* For communication from `getopt' to the caller.
25  When `getopt' finds an option that takes an argument,
26  the argument value is returned here.
27  Also, when `ordering' is RETURN_IN_ORDER,
28  each non-option ARGV-element is returned here. */
29 
30 extern char *optarg;
31 
32 /* Index in ARGV of the next element to be scanned.
33  This is used for communication to and from the caller
34  and for communication between successive calls to `getopt'.
35 
36  On entry to `getopt', zero means this is the first call; initialize.
37 
38  When `getopt' returns -1, this is the index of the first of the
39  non-option elements that the caller should itself scan.
40 
41  Otherwise, `optind' communicates from one call to the next
42  how much of ARGV has been scanned so far. */
43 
44 extern int optind;
45 
46 /* Callers store zero here to inhibit the error message `getopt' prints
47  for unrecognized options. */
48 
49 extern int opterr;
50 
51 /* Set to an option character which was unrecognized. */
52 
53 extern int optopt;
54 
55 /* Describe the long-named options requested by the application.
56  The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
57  of `struct option' terminated by an element containing a name which is
58  zero.
59 
60  The field `has_arg' is:
61  no_argument (or 0) if the option does not take an argument,
62  required_argument (or 1) if the option requires an argument,
63  optional_argument (or 2) if the option takes an optional argument.
64 
65  If the field `flag' is not NULL, it points to a variable that is set
66  to the value given in the field `val' when the option is found, but
67  left unchanged if the option is not found.
68 
69  To have a long-named option do something other than set an `int' to
70  a compiled-in constant, such as set a value from `optarg', set the
71  option's `flag' field to zero and its `val' field to a nonzero
72  value (the equivalent single-letter option character, if there is
73  one). For long options that have a zero `flag' field, `getopt'
74  returns the contents of the `val' field. */
75 
76 struct option
77 {
78  const char *name;
79  /* has_arg can't be an enum because some compilers complain about
80  type mismatches in all the code that assumes it is an int. */
81  int has_arg;
82  int *flag;
83  int val;
84 };
85 
86 /* Names for the values of the `has_arg' field of `struct option'. */
87 
88 #define no_argument 0
89 #define required_argument 1
90 #define optional_argument 2
91 
92 L4_CV int getopt (int argc, char *const *argv, const char *shortopts);
93 
94 L4_CV int getopt_long (int argc, char *const *argv, const char *shortopts,
95  const struct option *longopts, int *longind);
96 L4_CV int getopt_long_only (int argc, char *const *argv,
97  const char *shortopts,
98  const struct option *longopts, int *longind);
99 
100 L4_CV int _getopt_internal (int argc, char *const *argv,
101  const char *shortopts,
102  const struct option *longopts, int *longind,
103  int long_only);
104 
106 
107 #endif /* _GETOPT_H */
#define EXTERN_C_END
End section with C types and functions.
Definition: compiler.h:187
L4 compiler related defines.
#define EXTERN_C_BEGIN
Start section with C types and functions.
Definition: compiler.h:186
#define L4_CV
Define calling convention.
Definition: linkage.h:44