Commit ffa1e2dc ffa1e2dcd8035704e825eafcf9e597a8f3b656ca by Sergey Poznyakoff

Added to the repository

1 parent 52b33f07
1 /* Formatted output to strings.
2 Copyright (C) 1999, 2002 Free Software Foundation, Inc.
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2, or (at your option)
7 any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License along
15 with this program; if not, write to the Free Software Foundation,
16 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
17
18 #ifdef HAVE_CONFIG_H
19 # include <config.h>
20 #endif
21
22 /* Specification. */
23 #include "vasprintf.h"
24
25 #include <stdarg.h>
26
27 int
28 asprintf (char **resultp, const char *format, ...)
29 {
30 va_list args;
31 int result;
32
33 va_start (args, format);
34 result = vasprintf (resultp, format, args);
35 va_end (args);
36 return result;
37 }
1 /* GNU Mailutils -- a suite of utilities for electronic mail
2 Copyright (C) 2005 Free Software Foundation, Inc.
3
4 GNU Mailutils is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2, or (at your option)
7 any later version.
8
9 GNU Mailutils is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with GNU Mailutils; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
17
18 #ifdef HAVE_CONFIG_H
19 # include <config.h>
20 #endif
21
22 #include <stdlib.h>
23 #include <mailutils/errno.h>
24 #include <mailutils/error.h>
25
26 void
27 xalloc_die (void)
28 {
29 mu_error ("not enough memory");
30 exit (1);
31 }
1 # This file is generated automatically. Please, do not edit.
2 #
3 AC_DEFUN([libmailutils_GNULIB],[
4 # allocsa
5 gl_ALLOCSA
6
7 # error
8 gl_ERROR
9
10 # exit
11
12 # exitfail
13 gl_EXITFAIL
14
15 # stdbool
16 AM_STDBOOL_H
17
18 # xalloc
19 gl_XALLOC
20
21 # fnmatch
22 # No macro. You should also use one of fnmatch-posix or fnmatch-gnu.
23
24 # getpass-gnu
25 gl_FUNC_GETPASS_GNU
26
27 # malloc
28 AC_FUNC_MALLOC
29
30 # obstack
31 gl_OBSTACK
32
33 # realloc
34 AC_FUNC_REALLOC
35
36 # setenv
37 gt_FUNC_SETENV
38
39 # snprintf
40 gl_FUNC_SNPRINTF
41
42 # xstrtol
43 gl_XSTRTOL
44
45 # vasprintf
46 gl_FUNC_VASPRINTF
47
48 # xsize
49 gl_XSIZE
50
51 ])
52 AC_DEFUN([libmailbox_GNULIB],[
53 # alloca
54
55 # alloca-opt
56 gl_FUNC_ALLOCA
57
58 # argp
59 gl_ARGP
60
61 # getline
62 AM_FUNC_GETLINE
63
64 # regex
65 gl_REGEX
66
67 # strtok_r
68 gl_FUNC_STRTOK_R
69
70 # md5
71 gl_MD5
72
73 # extensions
74 dnl gl_USE_SYSTEM_EXTENSIONS must be added quite early to configure.ac.
75
76 # getopt
77 gl_GETOPT
78
79 # gettext
80
81 # mempcpy
82 gl_FUNC_MEMPCPY
83
84 # minmax
85
86 # restrict
87 gl_C_RESTRICT
88
89 # strcase
90 gl_STRCASE
91
92 # strchrnul
93 gl_FUNC_STRCHRNUL
94
95 # strndup
96 gl_FUNC_STRNDUP
97
98 # strnlen
99 gl_FUNC_STRNLEN
100
101 # sysexits
102 gl_SYSEXITS
103
104 # vasnprintf
105 gl_FUNC_VASNPRINTF
106
107 # vsnprintf
108 gl_FUNC_VSNPRINTF
109
110 # xsize
111 gl_XSIZE
112
113 ])
1 /* Memory allocation on the stack.
2
3 Copyright (C) 1995, 1999, 2001, 2002, 2003, 2004 Free Software
4 Foundation, Inc.
5
6 This program is free software; you can redistribute it and/or modify it
7 under the terms of the GNU General Public License as published
8 by the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
15
16 You should have received a copy of the GNU General Public
17 License along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
19 USA. */
20
21 /* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H
22 means there is a real alloca function. */
23 #ifndef _GNULIB_ALLOCA_H
24 # define _GNULIB_ALLOCA_H
25
26 /* alloca (N) returns a pointer to N bytes of memory
27 allocated on the stack, which will last until the function returns.
28 Use of alloca should be avoided:
29 - inside arguments of function calls - undefined behaviour,
30 - in inline functions - the allocation may actually last until the
31 calling function returns,
32 - for huge N (say, N >= 65536) - you never know how large (or small)
33 the stack is, and when the stack cannot fulfill the memory allocation
34 request, the program just crashes.
35 */
36
37 #ifdef __GNUC__
38 # define alloca __builtin_alloca
39 #elif defined _AIX
40 # define alloca __alloca
41 #elif defined _MSC_VER
42 # include <malloc.h>
43 # define alloca _alloca
44 #else
45 # include <stddef.h>
46 # ifdef __cplusplus
47 extern "C"
48 # endif
49 void *alloca (size_t);
50 #endif
51
52 #endif /* _GNULIB_ALLOCA_H */
1 /* Hierarchial argument parsing, layered over getopt.
2 Copyright (C) 1995-1999,2003,2004 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4 Written by Miles Bader <miles@gnu.ai.mit.edu>.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License along
17 with this program; if not, write to the Free Software Foundation,
18 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
19
20 #ifndef _ARGP_H
21 #define _ARGP_H
22
23 #include <stdio.h>
24 #include <ctype.h>
25 #include <getopt.h>
26
27 #define __need_error_t
28 #include <errno.h>
29
30 #ifndef __const
31 # define __const const
32 #endif
33
34 #ifndef __THROW
35 # define __THROW
36 #endif
37 #ifndef __NTH
38 # define __NTH(fct) fct __THROW
39 #endif
40
41 #ifndef __attribute__
42 /* This feature is available in gcc versions 2.5 and later. */
43 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
44 # define __attribute__(Spec) /* empty */
45 # endif
46 /* The __-protected variants of `format' and `printf' attributes
47 are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
48 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || __STRICT_ANSI__
49 # define __format__ format
50 # define __printf__ printf
51 # endif
52 #endif
53
54 /* GCC 2.95 and later have "__restrict"; C99 compilers have
55 "restrict", and "configure" may have defined "restrict". */
56 #ifndef __restrict
57 # if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__))
58 # if defined restrict || 199901L <= __STDC_VERSION__
59 # define __restrict restrict
60 # else
61 # define __restrict
62 # endif
63 # endif
64 #endif
65
66 #ifndef __error_t_defined
67 typedef int error_t;
68 # define __error_t_defined
69 #endif
70
71 #ifdef __cplusplus
72 extern "C" {
73 #endif
74
75 /* A description of a particular option. A pointer to an array of
76 these is passed in the OPTIONS field of an argp structure. Each option
77 entry can correspond to one long option and/or one short option; more
78 names for the same option can be added by following an entry in an option
79 array with options having the OPTION_ALIAS flag set. */
80 struct argp_option
81 {
82 /* The long option name. For more than one name for the same option, you
83 can use following options with the OPTION_ALIAS flag set. */
84 __const char *name;
85
86 /* What key is returned for this option. If > 0 and printable, then it's
87 also accepted as a short option. */
88 int key;
89
90 /* If non-NULL, this is the name of the argument associated with this
91 option, which is required unless the OPTION_ARG_OPTIONAL flag is set. */
92 __const char *arg;
93
94 /* OPTION_ flags. */
95 int flags;
96
97 /* The doc string for this option. If both NAME and KEY are 0, This string
98 will be printed outdented from the normal option column, making it
99 useful as a group header (it will be the first thing printed in its
100 group); in this usage, it's conventional to end the string with a `:'. */
101 __const char *doc;
102
103 /* The group this option is in. In a long help message, options are sorted
104 alphabetically within each group, and the groups presented in the order
105 0, 1, 2, ..., n, -m, ..., -2, -1. Every entry in an options array with
106 if this field 0 will inherit the group number of the previous entry, or
107 zero if it's the first one, unless its a group header (NAME and KEY both
108 0), in which case, the previous entry + 1 is the default. Automagic
109 options such as --help are put into group -1. */
110 int group;
111 };
112
113 /* The argument associated with this option is optional. */
114 #define OPTION_ARG_OPTIONAL 0x1
115
116 /* This option isn't displayed in any help messages. */
117 #define OPTION_HIDDEN 0x2
118
119 /* This option is an alias for the closest previous non-alias option. This
120 means that it will be displayed in the same help entry, and will inherit
121 fields other than NAME and KEY from the aliased option. */
122 #define OPTION_ALIAS 0x4
123
124 /* This option isn't actually an option (and so should be ignored by the
125 actual option parser), but rather an arbitrary piece of documentation that
126 should be displayed in much the same manner as the options. If this flag
127 is set, then the option NAME field is displayed unmodified (e.g., no `--'
128 prefix is added) at the left-margin (where a *short* option would normally
129 be displayed), and the documentation string in the normal place. The NAME
130 field will be translated using gettext, unless OPTION_NO_TRANS is set (see
131 below). For purposes of sorting, any leading whitespace and punctuation is
132 ignored, except that if the first non-whitespace character is not `-', this
133 entry is displayed after all options (and OPTION_DOC entries with a leading
134 `-') in the same group. */
135 #define OPTION_DOC 0x8
136
137 /* This option shouldn't be included in `long' usage messages (but is still
138 included in help messages). This is mainly intended for options that are
139 completely documented in an argp's ARGS_DOC field, in which case including
140 the option in the generic usage list would be redundant. For instance,
141 if ARGS_DOC is "FOO BAR\n-x BLAH", and the `-x' option's purpose is to
142 distinguish these two cases, -x should probably be marked
143 OPTION_NO_USAGE. */
144 #define OPTION_NO_USAGE 0x10
145
146 /* Valid only in conjunction with OPTION_DOC. This option disables translation
147 of option name. */
148 #define OPTION_NO_TRANS 0x20
149
150
151 struct argp; /* fwd declare this type */
152 struct argp_state; /* " */
153 struct argp_child; /* " */
154
155 /* The type of a pointer to an argp parsing function. */
156 typedef error_t (*argp_parser_t) (int key, char *arg,
157 struct argp_state *state);
158
159 /* What to return for unrecognized keys. For special ARGP_KEY_ keys, such
160 returns will simply be ignored. For user keys, this error will be turned
161 into EINVAL (if the call to argp_parse is such that errors are propagated
162 back to the user instead of exiting); returning EINVAL itself would result
163 in an immediate stop to parsing in *all* cases. */
164 #define ARGP_ERR_UNKNOWN E2BIG /* Hurd should never need E2BIG. XXX */
165
166 /* Special values for the KEY argument to an argument parsing function.
167 ARGP_ERR_UNKNOWN should be returned if they aren't understood.
168
169 The sequence of keys to a parsing function is either (where each
170 uppercased word should be prefixed by `ARGP_KEY_' and opt is a user key):
171
172 INIT opt... NO_ARGS END SUCCESS -- No non-option arguments at all
173 or INIT (opt | ARG)... END SUCCESS -- All non-option args parsed
174 or INIT (opt | ARG)... SUCCESS -- Some non-option arg unrecognized
175
176 The third case is where every parser returned ARGP_KEY_UNKNOWN for an
177 argument, in which case parsing stops at that argument (returning the
178 unparsed arguments to the caller of argp_parse if requested, or stopping
179 with an error message if not).
180
181 If an error occurs (either detected by argp, or because the parsing
182 function returned an error value), then the parser is called with
183 ARGP_KEY_ERROR, and no further calls are made. */
184
185 /* This is not an option at all, but rather a command line argument. If a
186 parser receiving this key returns success, the fact is recorded, and the
187 ARGP_KEY_NO_ARGS case won't be used. HOWEVER, if while processing the
188 argument, a parser function decrements the NEXT field of the state it's
189 passed, the option won't be considered processed; this is to allow you to
190 actually modify the argument (perhaps into an option), and have it
191 processed again. */
192 #define ARGP_KEY_ARG 0
193 /* There are remaining arguments not parsed by any parser, which may be found
194 starting at (STATE->argv + STATE->next). If success is returned, but
195 STATE->next left untouched, it's assumed that all arguments were consume,
196 otherwise, the parser should adjust STATE->next to reflect any arguments
197 consumed. */
198 #define ARGP_KEY_ARGS 0x1000006
199 /* There are no more command line arguments at all. */
200 #define ARGP_KEY_END 0x1000001
201 /* Because it's common to want to do some special processing if there aren't
202 any non-option args, user parsers are called with this key if they didn't
203 successfully process any non-option arguments. Called just before
204 ARGP_KEY_END (where more general validity checks on previously parsed
205 arguments can take place). */
206 #define ARGP_KEY_NO_ARGS 0x1000002
207 /* Passed in before any parsing is done. Afterwards, the values of each
208 element of the CHILD_INPUT field, if any, in the state structure is
209 copied to each child's state to be the initial value of the INPUT field. */
210 #define ARGP_KEY_INIT 0x1000003
211 /* Use after all other keys, including SUCCESS & END. */
212 #define ARGP_KEY_FINI 0x1000007
213 /* Passed in when parsing has successfully been completed (even if there are
214 still arguments remaining). */
215 #define ARGP_KEY_SUCCESS 0x1000004
216 /* Passed in if an error occurs. */
217 #define ARGP_KEY_ERROR 0x1000005
218
219 /* An argp structure contains a set of options declarations, a function to
220 deal with parsing one, documentation string, a possible vector of child
221 argp's, and perhaps a function to filter help output. When actually
222 parsing options, getopt is called with the union of all the argp
223 structures chained together through their CHILD pointers, with conflicts
224 being resolved in favor of the first occurrence in the chain. */
225 struct argp
226 {
227 /* An array of argp_option structures, terminated by an entry with both
228 NAME and KEY having a value of 0. */
229 __const struct argp_option *options;
230
231 /* What to do with an option from this structure. KEY is the key
232 associated with the option, and ARG is any associated argument (NULL if
233 none was supplied). If KEY isn't understood, ARGP_ERR_UNKNOWN should be
234 returned. If a non-zero, non-ARGP_ERR_UNKNOWN value is returned, then
235 parsing is stopped immediately, and that value is returned from
236 argp_parse(). For special (non-user-supplied) values of KEY, see the
237 ARGP_KEY_ definitions below. */
238 argp_parser_t parser;
239
240 /* A string describing what other arguments are wanted by this program. It
241 is only used by argp_usage to print the `Usage:' message. If it
242 contains newlines, the strings separated by them are considered
243 alternative usage patterns, and printed on separate lines (lines after
244 the first are prefix by ` or: ' instead of `Usage:'). */
245 __const char *args_doc;
246
247 /* If non-NULL, a string containing extra text to be printed before and
248 after the options in a long help message (separated by a vertical tab
249 `\v' character). */
250 __const char *doc;
251
252 /* A vector of argp_children structures, terminated by a member with a 0
253 argp field, pointing to child argps should be parsed with this one. Any
254 conflicts are resolved in favor of this argp, or early argps in the
255 CHILDREN list. This field is useful if you use libraries that supply
256 their own argp structure, which you want to use in conjunction with your
257 own. */
258 __const struct argp_child *children;
259
260 /* If non-zero, this should be a function to filter the output of help
261 messages. KEY is either a key from an option, in which case TEXT is
262 that option's help text, or a special key from the ARGP_KEY_HELP_
263 defines, below, describing which other help text TEXT is. The function
264 should return either TEXT, if it should be used as-is, a replacement
265 string, which should be malloced, and will be freed by argp, or NULL,
266 meaning `print nothing'. The value for TEXT is *after* any translation
267 has been done, so if any of the replacement text also needs translation,
268 that should be done by the filter function. INPUT is either the input
269 supplied to argp_parse, or NULL, if argp_help was called directly. */
270 char *(*help_filter) (int __key, __const char *__text, void *__input);
271
272 /* If non-zero the strings used in the argp library are translated using
273 the domain described by this string. Otherwise the currently installed
274 default domain is used. */
275 const char *argp_domain;
276 };
277
278 /* Possible KEY arguments to a help filter function. */
279 #define ARGP_KEY_HELP_PRE_DOC 0x2000001 /* Help text preceeding options. */
280 #define ARGP_KEY_HELP_POST_DOC 0x2000002 /* Help text following options. */
281 #define ARGP_KEY_HELP_HEADER 0x2000003 /* Option header string. */
282 #define ARGP_KEY_HELP_EXTRA 0x2000004 /* After all other documentation;
283 TEXT is NULL for this key. */
284 /* Explanatory note emitted when duplicate option arguments have been
285 suppressed. */
286 #define ARGP_KEY_HELP_DUP_ARGS_NOTE 0x2000005
287 #define ARGP_KEY_HELP_ARGS_DOC 0x2000006 /* Argument doc string. */
288
289 /* When an argp has a non-zero CHILDREN field, it should point to a vector of
290 argp_child structures, each of which describes a subsidiary argp. */
291 struct argp_child
292 {
293 /* The child parser. */
294 __const struct argp *argp;
295
296 /* Flags for this child. */
297 int flags;
298
299 /* If non-zero, an optional header to be printed in help output before the
300 child options. As a side-effect, a non-zero value forces the child
301 options to be grouped together; to achieve this effect without actually
302 printing a header string, use a value of "". */
303 __const char *header;
304
305 /* Where to group the child options relative to the other (`consolidated')
306 options in the parent argp; the values are the same as the GROUP field
307 in argp_option structs, but all child-groupings follow parent options at
308 a particular group level. If both this field and HEADER are zero, then
309 they aren't grouped at all, but rather merged with the parent options
310 (merging the child's grouping levels with the parents). */
311 int group;
312 };
313
314 /* Parsing state. This is provided to parsing functions called by argp,
315 which may examine and, as noted, modify fields. */
316 struct argp_state
317 {
318 /* The top level ARGP being parsed. */
319 __const struct argp *root_argp;
320
321 /* The argument vector being parsed. May be modified. */
322 int argc;
323 char **argv;
324
325 /* The index in ARGV of the next arg that to be parsed. May be modified. */
326 int next;
327
328 /* The flags supplied to argp_parse. May be modified. */
329 unsigned flags;
330
331 /* While calling a parsing function with a key of ARGP_KEY_ARG, this is the
332 number of the current arg, starting at zero, and incremented after each
333 such call returns. At all other times, this is the number of such
334 arguments that have been processed. */
335 unsigned arg_num;
336
337 /* If non-zero, the index in ARGV of the first argument following a special
338 `--' argument (which prevents anything following being interpreted as an
339 option). Only set once argument parsing has proceeded past this point. */
340 int quoted;
341
342 /* An arbitrary pointer passed in from the user. */
343 void *input;
344 /* Values to pass to child parsers. This vector will be the same length as
345 the number of children for the current parser. */
346 void **child_inputs;
347
348 /* For the parser's use. Initialized to 0. */
349 void *hook;
350
351 /* The name used when printing messages. This is initialized to ARGV[0],
352 or PROGRAM_INVOCATION_NAME if that is unavailable. */
353 char *name;
354
355 /* Streams used when argp prints something. */
356 FILE *err_stream; /* For errors; initialized to stderr. */
357 FILE *out_stream; /* For information; initialized to stdout. */
358
359 void *pstate; /* Private, for use by argp. */
360 };
361
362 /* Flags for argp_parse (note that the defaults are those that are
363 convenient for program command line parsing): */
364
365 /* Don't ignore the first element of ARGV. Normally (and always unless
366 ARGP_NO_ERRS is set) the first element of the argument vector is
367 skipped for option parsing purposes, as it corresponds to the program name
368 in a command line. */
369 #define ARGP_PARSE_ARGV0 0x01
370
371 /* Don't print error messages for unknown options to stderr; unless this flag
372 is set, ARGP_PARSE_ARGV0 is ignored, as ARGV[0] is used as the program
373 name in the error messages. This flag implies ARGP_NO_EXIT (on the
374 assumption that silent exiting upon errors is bad behaviour). */
375 #define ARGP_NO_ERRS 0x02
376
377 /* Don't parse any non-option args. Normally non-option args are parsed by
378 calling the parse functions with a key of ARGP_KEY_ARG, and the actual arg
379 as the value. Since it's impossible to know which parse function wants to
380 handle it, each one is called in turn, until one returns 0 or an error
381 other than ARGP_ERR_UNKNOWN; if an argument is handled by no one, the
382 argp_parse returns prematurely (but with a return value of 0). If all
383 args have been parsed without error, all parsing functions are called one
384 last time with a key of ARGP_KEY_END. This flag needn't normally be set,
385 as the normal behavior is to stop parsing as soon as some argument can't
386 be handled. */
387 #define ARGP_NO_ARGS 0x04
388
389 /* Parse options and arguments in the same order they occur on the command
390 line -- normally they're rearranged so that all options come first. */
391 #define ARGP_IN_ORDER 0x08
392
393 /* Don't provide the standard long option --help, which causes usage and
394 option help information to be output to stdout, and exit (0) called. */
395 #define ARGP_NO_HELP 0x10
396
397 /* Don't exit on errors (they may still result in error messages). */
398 #define ARGP_NO_EXIT 0x20
399
400 /* Use the gnu getopt `long-only' rules for parsing arguments. */
401 #define ARGP_LONG_ONLY 0x40
402
403 /* Turns off any message-printing/exiting options. */
404 #define ARGP_SILENT (ARGP_NO_EXIT | ARGP_NO_ERRS | ARGP_NO_HELP)
405
406 /* Parse the options strings in ARGC & ARGV according to the options in ARGP.
407 FLAGS is one of the ARGP_ flags above. If ARG_INDEX is non-NULL, the
408 index in ARGV of the first unparsed option is returned in it. If an
409 unknown option is present, ARGP_ERR_UNKNOWN is returned; if some parser
410 routine returned a non-zero value, it is returned; otherwise 0 is
411 returned. This function may also call exit unless the ARGP_NO_HELP flag
412 is set. INPUT is a pointer to a value to be passed in to the parser. */
413 extern error_t argp_parse (__const struct argp *__restrict __argp,
414 int __argc, char **__restrict __argv,
415 unsigned __flags, int *__restrict __arg_index,
416 void *__restrict __input);
417 extern error_t __argp_parse (__const struct argp *__restrict __argp,
418 int __argc, char **__restrict __argv,
419 unsigned __flags, int *__restrict __arg_index,
420 void *__restrict __input);
421
422 /* Global variables. */
423
424 /* If defined or set by the user program to a non-zero value, then a default
425 option --version is added (unless the ARGP_NO_HELP flag is used), which
426 will print this string followed by a newline and exit (unless the
427 ARGP_NO_EXIT flag is used). Overridden by ARGP_PROGRAM_VERSION_HOOK. */
428 extern __const char *argp_program_version;
429
430 /* If defined or set by the user program to a non-zero value, then a default
431 option --version is added (unless the ARGP_NO_HELP flag is used), which
432 calls this function with a stream to print the version to and a pointer to
433 the current parsing state, and then exits (unless the ARGP_NO_EXIT flag is
434 used). This variable takes precedent over ARGP_PROGRAM_VERSION. */
435 extern void (*argp_program_version_hook) (FILE *__restrict __stream,
436 struct argp_state *__restrict
437 __state);
438
439 /* If defined or set by the user program, it should point to string that is
440 the bug-reporting address for the program. It will be printed by
441 argp_help if the ARGP_HELP_BUG_ADDR flag is set (as it is by various
442 standard help messages), embedded in a sentence that says something like
443 `Report bugs to ADDR.'. */
444 extern __const char *argp_program_bug_address;
445
446 /* The exit status that argp will use when exiting due to a parsing error.
447 If not defined or set by the user program, this defaults to EX_USAGE from
448 <sysexits.h>. */
449 extern error_t argp_err_exit_status;
450
451 /* Flags for argp_help. */
452 #define ARGP_HELP_USAGE 0x01 /* a Usage: message. */
453 #define ARGP_HELP_SHORT_USAGE 0x02 /* " but don't actually print options. */
454 #define ARGP_HELP_SEE 0x04 /* a `Try ... for more help' message. */
455 #define ARGP_HELP_LONG 0x08 /* a long help message. */
456 #define ARGP_HELP_PRE_DOC 0x10 /* doc string preceding long help. */
457 #define ARGP_HELP_POST_DOC 0x20 /* doc string following long help. */
458 #define ARGP_HELP_DOC (ARGP_HELP_PRE_DOC | ARGP_HELP_POST_DOC)
459 #define ARGP_HELP_BUG_ADDR 0x40 /* bug report address */
460 #define ARGP_HELP_LONG_ONLY 0x80 /* modify output appropriately to
461 reflect ARGP_LONG_ONLY mode. */
462
463 /* These ARGP_HELP flags are only understood by argp_state_help. */
464 #define ARGP_HELP_EXIT_ERR 0x100 /* Call exit(1) instead of returning. */
465 #define ARGP_HELP_EXIT_OK 0x200 /* Call exit(0) instead of returning. */
466
467 /* The standard thing to do after a program command line parsing error, if an
468 error message has already been printed. */
469 #define ARGP_HELP_STD_ERR \
470 (ARGP_HELP_SEE | ARGP_HELP_EXIT_ERR)
471 /* The standard thing to do after a program command line parsing error, if no
472 more specific error message has been printed. */
473 #define ARGP_HELP_STD_USAGE \
474 (ARGP_HELP_SHORT_USAGE | ARGP_HELP_SEE | ARGP_HELP_EXIT_ERR)
475 /* The standard thing to do in response to a --help option. */
476 #define ARGP_HELP_STD_HELP \
477 (ARGP_HELP_SHORT_USAGE | ARGP_HELP_LONG | ARGP_HELP_EXIT_OK \
478 | ARGP_HELP_DOC | ARGP_HELP_BUG_ADDR)
479
480 /* Output a usage message for ARGP to STREAM. FLAGS are from the set
481 ARGP_HELP_*. */
482 extern void argp_help (__const struct argp *__restrict __argp,
483 FILE *__restrict __stream,
484 unsigned __flags, char *__restrict __name);
485 extern void __argp_help (__const struct argp *__restrict __argp,
486 FILE *__restrict __stream, unsigned __flags,
487 char *__name);
488
489 /* The following routines are intended to be called from within an argp
490 parsing routine (thus taking an argp_state structure as the first
491 argument). They may or may not print an error message and exit, depending
492 on the flags in STATE -- in any case, the caller should be prepared for
493 them *not* to exit, and should return an appropiate error after calling
494 them. [argp_usage & argp_error should probably be called argp_state_...,
495 but they're used often enough that they should be short] */
496
497 /* Output, if appropriate, a usage message for STATE to STREAM. FLAGS are
498 from the set ARGP_HELP_*. */
499 extern void argp_state_help (__const struct argp_state *__restrict __state,
500 FILE *__restrict __stream,
501 unsigned int __flags);
502 extern void __argp_state_help (__const struct argp_state *__restrict __state,
503 FILE *__restrict __stream,
504 unsigned int __flags);
505
506 /* Possibly output the standard usage message for ARGP to stderr and exit. */
507 extern void argp_usage (__const struct argp_state *__state);
508 extern void __argp_usage (__const struct argp_state *__state);
509
510 /* If appropriate, print the printf string FMT and following args, preceded
511 by the program name and `:', to stderr, and followed by a `Try ... --help'
512 message, then exit (1). */
513 extern void argp_error (__const struct argp_state *__restrict __state,
514 __const char *__restrict __fmt, ...)
515 __attribute__ ((__format__ (__printf__, 2, 3)));
516 extern void __argp_error (__const struct argp_state *__restrict __state,
517 __const char *__restrict __fmt, ...)
518 __attribute__ ((__format__ (__printf__, 2, 3)));
519
520 /* Similar to the standard gnu error-reporting function error(), but will
521 respect the ARGP_NO_EXIT and ARGP_NO_ERRS flags in STATE, and will print
522 to STATE->err_stream. This is useful for argument parsing code that is
523 shared between program startup (when exiting is desired) and runtime
524 option parsing (when typically an error code is returned instead). The
525 difference between this function and argp_error is that the latter is for
526 *parsing errors*, and the former is for other problems that occur during
527 parsing but don't reflect a (syntactic) problem with the input. */
528 extern void argp_failure (__const struct argp_state *__restrict __state,
529 int __status, int __errnum,
530 __const char *__restrict __fmt, ...)
531 __attribute__ ((__format__ (__printf__, 4, 5)));
532 extern void __argp_failure (__const struct argp_state *__restrict __state,
533 int __status, int __errnum,
534 __const char *__restrict __fmt, ...)
535 __attribute__ ((__format__ (__printf__, 4, 5)));
536
537 /* Returns true if the option OPT is a valid short option. */
538 extern int _option_is_short (__const struct argp_option *__opt) __THROW;
539 extern int __option_is_short (__const struct argp_option *__opt) __THROW;
540
541 /* Returns true if the option OPT is in fact the last (unused) entry in an
542 options array. */
543 extern int _option_is_end (__const struct argp_option *__opt) __THROW;
544 extern int __option_is_end (__const struct argp_option *__opt) __THROW;
545
546 /* Return the input field for ARGP in the parser corresponding to STATE; used
547 by the help routines. */
548 extern void *_argp_input (__const struct argp *__restrict __argp,
549 __const struct argp_state *__restrict __state)
550 __THROW;
551 extern void *__argp_input (__const struct argp *__restrict __argp,
552 __const struct argp_state *__restrict __state)
553 __THROW;
554
555 #ifdef __USE_EXTERN_INLINES
556
557 # if !_LIBC
558 # define __argp_usage argp_usage
559 # define __argp_state_help argp_state_help
560 # define __option_is_short _option_is_short
561 # define __option_is_end _option_is_end
562 # endif
563
564 # ifndef ARGP_EI
565 # define ARGP_EI extern __inline__
566 # endif
567
568 ARGP_EI void
569 __NTH (__argp_usage (__const struct argp_state *__state))
570 {
571 __argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE);
572 }
573
574 ARGP_EI int
575 __NTH (__option_is_short (__const struct argp_option *__opt))
576 {
577 if (__opt->flags & OPTION_DOC)
578 return 0;
579 else
580 {
581 int __key = __opt->key;
582 return __key > 0 && isprint (__key);
583 }
584 }
585
586 ARGP_EI int
587 __NTH (__option_is_end (__const struct argp_option *__opt))
588 {
589 return !__opt->key && !__opt->name && !__opt->doc && !__opt->group;
590 }
591
592 # if !_LIBC
593 # undef __argp_usage
594 # undef __argp_state_help
595 # undef __option_is_short
596 # undef __option_is_end
597 # endif
598 #endif /* Use extern inlines. */
599
600 #ifdef __cplusplus
601 }
602 #endif
603
604 #endif /* argp.h */
1 /* Declarations for getopt.
2 Copyright (C) 1989-1994,1996-1999,2001,2003,2004
3 Free Software Foundation, Inc.
4 This file is part of the GNU C Library.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License along
17 with this program; if not, write to the Free Software Foundation,
18 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
19
20 #ifndef _GETOPT_H
21
22 #ifndef __need_getopt
23 # define _GETOPT_H 1
24 #endif
25
26 /* Standalone applications should #define __GETOPT_PREFIX to an
27 identifier that prefixes the external functions and variables
28 defined in this header. When this happens, include the
29 headers that might declare getopt so that they will not cause
30 confusion if included after this file. Then systematically rename
31 identifiers so that they do not collide with the system functions
32 and variables. Renaming avoids problems with some compilers and
33 linkers. */
34 #if defined __GETOPT_PREFIX && !defined __need_getopt
35 # include <stdlib.h>
36 # include <stdio.h>
37 # if HAVE_UNISTD_H
38 # include <unistd.h>
39 # endif
40 # undef __need_getopt
41 # undef getopt
42 # undef getopt_long
43 # undef getopt_long_only
44 # undef optarg
45 # undef opterr
46 # undef optind
47 # undef optopt
48 # define __GETOPT_CONCAT(x, y) x ## y
49 # define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y)
50 # define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y)
51 # define getopt __GETOPT_ID (getopt)
52 # define getopt_long __GETOPT_ID (getopt_long)
53 # define getopt_long_only __GETOPT_ID (getopt_long_only)
54 # define optarg __GETOPT_ID (optarg)
55 # define opterr __GETOPT_ID (opterr)
56 # define optind __GETOPT_ID (optind)
57 # define optopt __GETOPT_ID (optopt)
58 #endif
59
60 /* Standalone applications get correct prototypes for getopt_long and
61 getopt_long_only; they declare "char **argv". libc uses prototypes
62 with "char *const *argv" that are incorrect because getopt_long and
63 getopt_long_only can permute argv; this is required for backward
64 compatibility (e.g., for LSB 2.0.1).
65
66 This used to be `#if defined __GETOPT_PREFIX && !defined __need_getopt',
67 but it caused redefinition warnings if both unistd.h and getopt.h were
68 included, since unistd.h includes getopt.h having previously defined
69 __need_getopt.
70
71 The only place where __getopt_argv_const is used is in definitions
72 of getopt_long and getopt_long_only below, but these are visible
73 only if __need_getopt is not defined, so it is quite safe to rewrite
74 the conditional as follows:
75 */
76 #if !defined __need_getopt
77 # if defined __GETOPT_PREFIX
78 # define __getopt_argv_const /* empty */
79 # else
80 # define __getopt_argv_const const
81 # endif
82 #endif
83
84 /* If __GNU_LIBRARY__ is not already defined, either we are being used
85 standalone, or this is the first header included in the source file.
86 If we are being used with glibc, we need to include <features.h>, but
87 that does not exist if we are standalone. So: if __GNU_LIBRARY__ is
88 not defined, include <ctype.h>, which will pull in <features.h> for us
89 if it's from glibc. (Why ctype.h? It's guaranteed to exist and it
90 doesn't flood the namespace with stuff the way some other headers do.) */
91 #if !defined __GNU_LIBRARY__
92 # include <ctype.h>
93 #endif
94
95 #ifndef __THROW
96 # ifndef __GNUC_PREREQ
97 # define __GNUC_PREREQ(maj, min) (0)
98 # endif
99 # if defined __cplusplus && __GNUC_PREREQ (2,8)
100 # define __THROW throw ()
101 # else
102 # define __THROW
103 # endif
104 #endif
105
106 #ifdef __cplusplus
107 extern "C" {
108 #endif
109
110 /* For communication from `getopt' to the caller.
111 When `getopt' finds an option that takes an argument,
112 the argument value is returned here.
113 Also, when `ordering' is RETURN_IN_ORDER,
114 each non-option ARGV-element is returned here. */
115
116 extern char *optarg;
117
118 /* Index in ARGV of the next element to be scanned.
119 This is used for communication to and from the caller
120 and for communication between successive calls to `getopt'.
121
122 On entry to `getopt', zero means this is the first call; initialize.
123
124 When `getopt' returns -1, this is the index of the first of the
125 non-option elements that the caller should itself scan.
126
127 Otherwise, `optind' communicates from one call to the next
128 how much of ARGV has been scanned so far. */
129
130 extern int optind;
131
132 /* Callers store zero here to inhibit the error message `getopt' prints
133 for unrecognized options. */
134
135 extern int opterr;
136
137 /* Set to an option character which was unrecognized. */
138
139 extern int optopt;
140
141 #ifndef __need_getopt
142 /* Describe the long-named options requested by the application.
143 The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
144 of `struct option' terminated by an element containing a name which is
145 zero.
146
147 The field `has_arg' is:
148 no_argument (or 0) if the option does not take an argument,
149 required_argument (or 1) if the option requires an argument,
150 optional_argument (or 2) if the option takes an optional argument.
151
152 If the field `flag' is not NULL, it points to a variable that is set
153 to the value given in the field `val' when the option is found, but
154 left unchanged if the option is not found.
155
156 To have a long-named option do something other than set an `int' to
157 a compiled-in constant, such as set a value from `optarg', set the
158 option's `flag' field to zero and its `val' field to a nonzero
159 value (the equivalent single-letter option character, if there is
160 one). For long options that have a zero `flag' field, `getopt'
161 returns the contents of the `val' field. */
162
163 struct option
164 {
165 const char *name;
166 /* has_arg can't be an enum because some compilers complain about
167 type mismatches in all the code that assumes it is an int. */
168 int has_arg;
169 int *flag;
170 int val;
171 };
172
173 /* Names for the values of the `has_arg' field of `struct option'. */
174
175 # define no_argument 0
176 # define required_argument 1
177 # define optional_argument 2
178 #endif /* need getopt */
179
180
181 /* Get definitions and prototypes for functions to process the
182 arguments in ARGV (ARGC of them, minus the program name) for
183 options given in OPTS.
184
185 Return the option character from OPTS just read. Return -1 when
186 there are no more options. For unrecognized options, or options
187 missing arguments, `optopt' is set to the option letter, and '?' is
188 returned.
189
190 The OPTS string is a list of characters which are recognized option
191 letters, optionally followed by colons, specifying that that letter
192 takes an argument, to be placed in `optarg'.
193
194 If a letter in OPTS is followed by two colons, its argument is
195 optional. This behavior is specific to the GNU `getopt'.
196
197 The argument `--' causes premature termination of argument
198 scanning, explicitly telling `getopt' that there are no more
199 options.
200
201 If OPTS begins with `--', then non-option arguments are treated as
202 arguments to the option '\0'. This behavior is specific to the GNU
203 `getopt'. */
204
205 extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
206 __THROW;
207
208 #ifndef __need_getopt
209 extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
210 const char *__shortopts,
211 const struct option *__longopts, int *__longind)
212 __THROW;
213 extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
214 const char *__shortopts,
215 const struct option *__longopts, int *__longind)
216 __THROW;
217
218 #endif
219
220 #ifdef __cplusplus
221 }
222 #endif
223
224 /* Make sure we later can get all the definitions and declarations. */
225 #undef __need_getopt
226
227 #endif /* getopt.h */