-/* Declarations for getopt.\r
- Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2007, 2009-2011 Free Software\r
- Foundation, Inc.\r
- This file is part of the GNU C Library.\r
-\r
- This program is free software: you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 3 of the License, or\r
- (at your option) any later version.\r
-\r
- This program is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with this program. If not, see <http://www.gnu.org/licenses/>. */\r
-\r
-#ifndef _GL_GETOPT_H\r
-\r
-#if __GNUC__ >= 3\r
-#pragma GCC system_header\r
-#endif\r
-\r
-\r
-/* The include_next requires a split double-inclusion guard. We must\r
- also inform the replacement unistd.h to not recursively use\r
- <getopt.h>; our definitions will be present soon enough. */\r
-#if HAVE_GETOPT_H\r
-# define _GL_SYSTEM_GETOPT\r
-# ifndef __GNUC__\r
-# include <next_getopt.h>\r
-# else\r
-# include_next <getopt.h>\r
-# endif\r
-# undef _GL_SYSTEM_GETOPT\r
-#endif\r
-\r
-#ifndef _GL_GETOPT_H\r
-\r
-#ifndef __need_getopt\r
-# define _GL_GETOPT_H 1\r
-#endif\r
-\r
-/* Standalone applications should #define __GETOPT_PREFIX to an\r
- identifier that prefixes the external functions and variables\r
- defined in this header. When this happens, include the\r
- headers that might declare getopt so that they will not cause\r
- confusion if included after this file (if the system had <getopt.h>,\r
- we have already included it). Then systematically rename\r
- identifiers so that they do not collide with the system functions\r
- and variables. Renaming avoids problems with some compilers and\r
- linkers. */\r
-#if defined __GETOPT_PREFIX && !defined __need_getopt\r
-# if !HAVE_GETOPT_H\r
-# include <stdlib.h>\r
-# include <stdio.h>\r
-# include <unistd.h>\r
-# endif\r
-# undef __need_getopt\r
-# undef getopt\r
-# undef getopt_long\r
-# undef getopt_long_only\r
-# undef optarg\r
-# undef opterr\r
-# undef optind\r
-# undef optopt\r
-# undef option\r
-# define __GETOPT_CONCAT(x, y) x ## y\r
-# define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y)\r
-# define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y)\r
-# define getopt __GETOPT_ID (getopt)\r
-# define getopt_long __GETOPT_ID (getopt_long)\r
-# define getopt_long_only __GETOPT_ID (getopt_long_only)\r
-# define optarg __GETOPT_ID (optarg)\r
-# define opterr __GETOPT_ID (opterr)\r
-# define optind __GETOPT_ID (optind)\r
-# define optopt __GETOPT_ID (optopt)\r
-# define option __GETOPT_ID (option)\r
-# define _getopt_internal __GETOPT_ID (getopt_internal)\r
-#endif\r
-\r
-/* Standalone applications get correct prototypes for getopt_long and\r
- getopt_long_only; they declare "char **argv". libc uses prototypes\r
- with "char *const *argv" that are incorrect because getopt_long and\r
- getopt_long_only can permute argv; this is required for backward\r
- compatibility (e.g., for LSB 2.0.1).\r
-\r
- This used to be `#if defined __GETOPT_PREFIX && !defined __need_getopt',\r
- but it caused redefinition warnings if both unistd.h and getopt.h were\r
- included, since unistd.h includes getopt.h having previously defined\r
- __need_getopt.\r
-\r
- The only place where __getopt_argv_const is used is in definitions\r
- of getopt_long and getopt_long_only below, but these are visible\r
- only if __need_getopt is not defined, so it is quite safe to rewrite\r
- the conditional as follows:\r
-*/\r
-#if !defined __need_getopt\r
-# if defined __GETOPT_PREFIX\r
-# define __getopt_argv_const /* empty */\r
-# else\r
-# define __getopt_argv_const const\r
-# endif\r
-#endif\r
-\r
-/* If __GNU_LIBRARY__ is not already defined, either we are being used\r
- standalone, or this is the first header included in the source file.\r
- If we are being used with glibc, we need to include <features.h>, but\r
- that does not exist if we are standalone. So: if __GNU_LIBRARY__ is\r
- not defined, include <ctype.h>, which will pull in <features.h> for us\r
- if it's from glibc. (Why ctype.h? It's guaranteed to exist and it\r
- doesn't flood the namespace with stuff the way some other headers do.) */\r
-#if !defined __GNU_LIBRARY__\r
-# include <ctype.h>\r
-#endif\r
-\r
-#ifndef __THROW\r
-# ifndef __GNUC_PREREQ\r
-# define __GNUC_PREREQ(maj, min) (0)\r
-# endif\r
-# if defined __cplusplus && __GNUC_PREREQ (2,8)\r
-# define __THROW throw ()\r
-# else\r
-# define __THROW\r
-# endif\r
-#endif\r
-\r
-/* The definition of _GL_ARG_NONNULL is copied here. */\r
-/* A C macro for declaring that specific arguments must not be NULL.\r
- Copyright (C) 2009-2011 Free Software Foundation, Inc.\r
-\r
- This program is free software: you can redistribute it and/or modify it\r
- under the terms of the GNU General Public License as published\r
- by the Free Software Foundation; either version 3 of the License, or\r
- (at your option) any later version.\r
-\r
- This program is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
- General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with this program. If not, see <http://www.gnu.org/licenses/>. */\r
-\r
-/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools\r
- that the values passed as arguments n, ..., m must be non-NULL pointers.\r
- n = 1 stands for the first argument, n = 2 for the second argument etc. */\r
-#ifndef _GL_ARG_NONNULL\r
-# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3\r
-# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))\r
-# else\r
-# define _GL_ARG_NONNULL(params)\r
-# endif\r
-#endif\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/* For communication from `getopt' to the caller.\r
- When `getopt' finds an option that takes an argument,\r
- the argument value is returned here.\r
- Also, when `ordering' is RETURN_IN_ORDER,\r
- each non-option ARGV-element is returned here. */\r
-\r
-extern char *optarg;\r
-\r
-/* Index in ARGV of the next element to be scanned.\r
- This is used for communication to and from the caller\r
- and for communication between successive calls to `getopt'.\r
-\r
- On entry to `getopt', zero means this is the first call; initialize.\r
-\r
- When `getopt' returns -1, this is the index of the first of the\r
- non-option elements that the caller should itself scan.\r
-\r
- Otherwise, `optind' communicates from one call to the next\r
- how much of ARGV has been scanned so far. */\r
-\r
-extern int optind;\r
-\r
-/* Callers store zero here to inhibit the error message `getopt' prints\r
- for unrecognized options. */\r
-\r
-extern int opterr;\r
-\r
-/* Set to an option character which was unrecognized. */\r
-\r
-extern int optopt;\r
-\r
-#ifndef __need_getopt\r
-/* Describe the long-named options requested by the application.\r
- The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector\r
- of `struct option' terminated by an element containing a name which is\r
- zero.\r
-\r
- The field `has_arg' is:\r
- no_argument (or 0) if the option does not take an argument,\r
- required_argument (or 1) if the option requires an argument,\r
- optional_argument (or 2) if the option takes an optional argument.\r
-\r
- If the field `flag' is not NULL, it points to a variable that is set\r
- to the value given in the field `val' when the option is found, but\r
- left unchanged if the option is not found.\r
-\r
- To have a long-named option do something other than set an `int' to\r
- a compiled-in constant, such as set a value from `optarg', set the\r
- option's `flag' field to zero and its `val' field to a nonzero\r
- value (the equivalent single-letter option character, if there is\r
- one). For long options that have a zero `flag' field, `getopt'\r
- returns the contents of the `val' field. */\r
-\r
-# if !GNULIB_defined_struct_option\r
-struct option\r
-{\r
- const char *name;\r
- /* has_arg can't be an enum because some compilers complain about\r
- type mismatches in all the code that assumes it is an int. */\r
- int has_arg;\r
- int *flag;\r
- int val;\r
-};\r
-# define GNULIB_defined_struct_option 1\r
-# endif\r
-\r
-/* Names for the values of the `has_arg' field of `struct option'. */\r
-\r
-# define no_argument 0\r
-# define required_argument 1\r
-# define optional_argument 2\r
-#endif /* need getopt */\r
-\r
-\r
-/* Get definitions and prototypes for functions to process the\r
- arguments in ARGV (ARGC of them, minus the program name) for\r
- options given in OPTS.\r
-\r
- Return the option character from OPTS just read. Return -1 when\r
- there are no more options. For unrecognized options, or options\r
- missing arguments, `optopt' is set to the option letter, and '?' is\r
- returned.\r
-\r
- The OPTS string is a list of characters which are recognized option\r
- letters, optionally followed by colons, specifying that that letter\r
- takes an argument, to be placed in `optarg'.\r
-\r
- If a letter in OPTS is followed by two colons, its argument is\r
- optional. This behavior is specific to the GNU `getopt'.\r
-\r
- The argument `--' causes premature termination of argument\r
- scanning, explicitly telling `getopt' that there are no more\r
- options.\r
-\r
- If OPTS begins with `-', then non-option arguments are treated as\r
- arguments to the option '\1'. This behavior is specific to the GNU\r
- `getopt'. If OPTS begins with `+', or POSIXLY_CORRECT is set in\r
- the environment, then do not permute arguments. */\r
-\r
-extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)\r
- __THROW _GL_ARG_NONNULL ((2, 3));\r
-\r
-#ifndef __need_getopt\r
-extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,\r
- const char *__shortopts,\r
- const struct option *__longopts, int *__longind)\r
- __THROW _GL_ARG_NONNULL ((2, 3));\r
-extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,\r
- const char *__shortopts,\r
- const struct option *__longopts, int *__longind)\r
- __THROW _GL_ARG_NONNULL ((2, 3));\r
-\r
-#endif\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-/* Make sure we later can get all the definitions and declarations. */\r
-#undef __need_getopt\r
-\r
-#endif /* _GL_GETOPT_H */\r
-#endif /* _GL_GETOPT_H */\r
+/* Declarations for getopt.
+ Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2007, 2009-2012 Free Software
+ Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _GL_GETOPT_H
+
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+
+/* The include_next requires a split double-inclusion guard. We must
+ also inform the replacement unistd.h to not recursively use
+ <getopt.h>; our definitions will be present soon enough. */
+#if HAVE_GETOPT_H
+# define _GL_SYSTEM_GETOPT
+# ifndef __GNUC__
+# include <next_getopt.h>
+# else
+# include_next <getopt.h>
+# endif
+# undef _GL_SYSTEM_GETOPT
+#endif
+
+#ifndef _GL_GETOPT_H
+
+#ifndef __need_getopt
+# define _GL_GETOPT_H 1
+#endif
+
+/* Standalone applications should #define __GETOPT_PREFIX to an
+ identifier that prefixes the external functions and variables
+ defined in this header. When this happens, include the
+ headers that might declare getopt so that they will not cause
+ confusion if included after this file (if the system had <getopt.h>,
+ we have already included it). Then systematically rename
+ identifiers so that they do not collide with the system functions
+ and variables. Renaming avoids problems with some compilers and
+ linkers. */
+#if defined __GETOPT_PREFIX && !defined __need_getopt
+# if !HAVE_GETOPT_H
+# include <stdlib.h>
+# include <stdio.h>
+# include <unistd.h>
+# endif
+# undef __need_getopt
+# undef getopt
+# undef getopt_long
+# undef getopt_long_only
+# undef optarg
+# undef opterr
+# undef optind
+# undef optopt
+# undef option
+# define __GETOPT_CONCAT(x, y) x ## y
+# define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y)
+# define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y)
+# define getopt __GETOPT_ID (getopt)
+# define getopt_long __GETOPT_ID (getopt_long)
+# define getopt_long_only __GETOPT_ID (getopt_long_only)
+# define optarg __GETOPT_ID (optarg)
+# define opterr __GETOPT_ID (opterr)
+# define optind __GETOPT_ID (optind)
+# define optopt __GETOPT_ID (optopt)
+# define option __GETOPT_ID (option)
+# define _getopt_internal __GETOPT_ID (getopt_internal)
+#endif
+
+/* Standalone applications get correct prototypes for getopt_long and
+ getopt_long_only; they declare "char **argv". libc uses prototypes
+ with "char *const *argv" that are incorrect because getopt_long and
+ getopt_long_only can permute argv; this is required for backward
+ compatibility (e.g., for LSB 2.0.1).
+
+ This used to be '#if defined __GETOPT_PREFIX && !defined __need_getopt',
+ but it caused redefinition warnings if both unistd.h and getopt.h were
+ included, since unistd.h includes getopt.h having previously defined
+ __need_getopt.
+
+ The only place where __getopt_argv_const is used is in definitions
+ of getopt_long and getopt_long_only below, but these are visible
+ only if __need_getopt is not defined, so it is quite safe to rewrite
+ the conditional as follows:
+*/
+#if !defined __need_getopt
+# if defined __GETOPT_PREFIX
+# define __getopt_argv_const /* empty */
+# else
+# define __getopt_argv_const const
+# endif
+#endif
+
+/* If __GNU_LIBRARY__ is not already defined, either we are being used
+ standalone, or this is the first header included in the source file.
+ If we are being used with glibc, we need to include <features.h>, but
+ that does not exist if we are standalone. So: if __GNU_LIBRARY__ is
+ not defined, include <ctype.h>, which will pull in <features.h> for us
+ if it's from glibc. (Why ctype.h? It's guaranteed to exist and it
+ doesn't flood the namespace with stuff the way some other headers do.) */
+#if !defined __GNU_LIBRARY__
+# include <ctype.h>
+#endif
+
+#ifndef __THROW
+# ifndef __GNUC_PREREQ
+# define __GNUC_PREREQ(maj, min) (0)
+# endif
+# if defined __cplusplus && __GNUC_PREREQ (2,8)
+# define __THROW throw ()
+# else
+# define __THROW
+# endif
+#endif
+
+/* The definition of _GL_ARG_NONNULL is copied here. */
+/* A C macro for declaring that specific arguments must not be NULL.
+ Copyright (C) 2009-2012 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
+ that the values passed as arguments n, ..., m must be non-NULL pointers.
+ n = 1 stands for the first argument, n = 2 for the second argument etc. */
+#ifndef _GL_ARG_NONNULL
+# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
+# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
+# else
+# define _GL_ARG_NONNULL(params)
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* For communication from 'getopt' to the caller.
+ When 'getopt' finds an option that takes an argument,
+ the argument value is returned here.
+ Also, when 'ordering' is RETURN_IN_ORDER,
+ each non-option ARGV-element is returned here. */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+ This is used for communication to and from the caller
+ and for communication between successive calls to 'getopt'.
+
+ On entry to 'getopt', zero means this is the first call; initialize.
+
+ When 'getopt' returns -1, this is the index of the first of the
+ non-option elements that the caller should itself scan.
+
+ Otherwise, 'optind' communicates from one call to the next
+ how much of ARGV has been scanned so far. */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message 'getopt' prints
+ for unrecognized options. */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized. */
+
+extern int optopt;
+
+#ifndef __need_getopt
+/* Describe the long-named options requested by the application.
+ The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+ of 'struct option' terminated by an element containing a name which is
+ zero.
+
+ The field 'has_arg' is:
+ no_argument (or 0) if the option does not take an argument,
+ required_argument (or 1) if the option requires an argument,
+ optional_argument (or 2) if the option takes an optional argument.
+
+ If the field 'flag' is not NULL, it points to a variable that is set
+ to the value given in the field 'val' when the option is found, but
+ left unchanged if the option is not found.
+
+ To have a long-named option do something other than set an 'int' to
+ a compiled-in constant, such as set a value from 'optarg', set the
+ option's 'flag' field to zero and its 'val' field to a nonzero
+ value (the equivalent single-letter option character, if there is
+ one). For long options that have a zero 'flag' field, 'getopt'
+ returns the contents of the 'val' field. */
+
+# if !GNULIB_defined_struct_option
+struct option
+{
+ const char *name;
+ /* has_arg can't be an enum because some compilers complain about
+ type mismatches in all the code that assumes it is an int. */
+ int has_arg;
+ int *flag;
+ int val;
+};
+# define GNULIB_defined_struct_option 1
+# endif
+
+/* Names for the values of the 'has_arg' field of 'struct option'. */
+
+# define no_argument 0
+# define required_argument 1
+# define optional_argument 2
+#endif /* need getopt */
+
+
+/* Get definitions and prototypes for functions to process the
+ arguments in ARGV (ARGC of them, minus the program name) for
+ options given in OPTS.
+
+ Return the option character from OPTS just read. Return -1 when
+ there are no more options. For unrecognized options, or options
+ missing arguments, 'optopt' is set to the option letter, and '?' is
+ returned.
+
+ The OPTS string is a list of characters which are recognized option
+ letters, optionally followed by colons, specifying that that letter
+ takes an argument, to be placed in 'optarg'.
+
+ If a letter in OPTS is followed by two colons, its argument is
+ optional. This behavior is specific to the GNU 'getopt'.
+
+ The argument '--' causes premature termination of argument
+ scanning, explicitly telling 'getopt' that there are no more
+ options.
+
+ If OPTS begins with '-', then non-option arguments are treated as
+ arguments to the option '\1'. This behavior is specific to the GNU
+ 'getopt'. If OPTS begins with '+', or POSIXLY_CORRECT is set in
+ the environment, then do not permute arguments. */
+
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+ __THROW _GL_ARG_NONNULL ((2, 3));
+
+#ifndef __need_getopt
+extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind)
+ __THROW _GL_ARG_NONNULL ((2, 3));
+extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind)
+ __THROW _GL_ARG_NONNULL ((2, 3));
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Make sure we later can get all the definitions and declarations. */
+#undef __need_getopt
+
+#endif /* _GL_GETOPT_H */
+#endif /* _GL_GETOPT_H */