]> git.sesse.net Git - vlc/blob - src/config/vlc_getopt.h
Remove useless indirection
[vlc] / src / config / vlc_getopt.h
1 /*****************************************************************************
2  * Declarations for getopt_long()
3  *****************************************************************************
4  * Copyright (C) 1987-1997 Free Software Foundation, Inc.
5  * Copyright (C) 2005-2010 the VideoLAN team
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU Lesser General Public License as published by
9  * the Free Software Foundation; either version 2.1 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public License
18  * along with this program; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
20  *****************************************************************************/
21
22 #ifndef VLC_GETOPT_H
23 #define VLC_GETOPT_H 1
24
25 /* For communication from `getopt' to the caller.
26    When `getopt' finds an option that takes an argument,
27    the argument value is returned here.
28    Also, when `ordering' is RETURN_IN_ORDER,
29    each non-option ARGV-element is returned here.  */
30
31 extern char *vlc_optarg;
32
33 /* Index in ARGV of the next element to be scanned.
34    This is used for communication to and from the caller
35    and for communication between successive calls to `getopt'.
36
37    On entry to `getopt', zero means this is the first call; initialize.
38
39    When `getopt' returns -1, this is the index of the first of the
40    non-option elements that the caller should itself scan.
41
42    Otherwise, `optind' communicates from one call to the next
43    how much of ARGV has been scanned so far.  */
44
45 extern int vlc_optind;
46
47 /* Set to an option character which was unrecognized.  */
48
49 extern int vlc_optopt;
50
51 /* Describe the long-named options requested by the application.
52    The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
53    of `struct option' terminated by an element containing a name which is
54    zero.
55
56    The field `has_arg' is:
57    false if the option does not take an argument,
58    true if the option requires an argument.
59
60    If the field `flag' is not NULL, it points to a variable that is set
61    to the value given in the field `val' when the option is found, but
62    left unchanged if the option is not found.
63
64    To have a long-named option do something other than set an `int' to
65    a compiled-in constant, such as set a value from `optarg', set the
66    option's `flag' field to zero and its `val' field to a nonzero
67    value (the equivalent single-letter option character, if there is
68    one).  For long options that have a zero `flag' field, `getopt'
69    returns the contents of the `val' field.  */
70
71 struct vlc_option
72 {
73     const char *name;
74     bool has_arg;
75     int *flag;
76     int val;
77 };
78
79 extern int vlc_getopt_long(int argc, char *const *argv, const char *shortopts,
80                            const struct vlc_option *longopts, int *longind);
81
82 #endif                /* VLC_GETOPT_H */