>From f78aadac0f73d1ed8fb9b717ebc11cfcd23e4dc5 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 8 Apr 2017 23:48:02 -0700 Subject: [PATCH] getopt: prefer - to _ in new file names * lib/getopt-cdefs.in.h: Rename from lib/getopt_cdefs.in.h. * lib/getopt-core.h: Rename from lib/getopt_core.h. * lib/getopt-ext.h: Rename from lib/getopt_ext.h. * lib/getopt-pfx-core.h: Rename from lib/getopt_pfx_core.h. * lib/getopt-pfx-ext.h: Rename from lib/getopt_pfx_ext.h. All uses changed. --- ChangeLog | 8 +++++ lib/getopt-cdefs.in.h | 67 +++++++++++++++++++++++++++++++++++ lib/getopt-core.h | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++ lib/getopt-ext.h | 77 +++++++++++++++++++++++++++++++++++++++++ lib/getopt-pfx-core.h | 54 +++++++++++++++++++++++++++++ lib/getopt-pfx-ext.h | 64 ++++++++++++++++++++++++++++++++++ lib/getopt.in.h | 8 ++--- lib/getopt_cdefs.in.h | 67 ----------------------------------- lib/getopt_core.h | 96 --------------------------------------------------- lib/getopt_ext.h | 77 ----------------------------------------- lib/getopt_pfx_core.h | 54 ----------------------------- lib/getopt_pfx_ext.h | 64 ---------------------------------- lib/unistd.in.h | 4 +-- m4/getopt.m4 | 4 +-- modules/getopt-posix | 16 ++++----- 15 files changed, 382 insertions(+), 374 deletions(-) create mode 100644 lib/getopt-cdefs.in.h create mode 100644 lib/getopt-core.h create mode 100644 lib/getopt-ext.h create mode 100644 lib/getopt-pfx-core.h create mode 100644 lib/getopt-pfx-ext.h delete mode 100644 lib/getopt_cdefs.in.h delete mode 100644 lib/getopt_core.h delete mode 100644 lib/getopt_ext.h delete mode 100644 lib/getopt_pfx_core.h delete mode 100644 lib/getopt_pfx_ext.h diff --git a/ChangeLog b/ChangeLog index 595f2ba..ae1a8bd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2017-04-08 Paul Eggert + getopt: prefer - to _ in new file names + * lib/getopt-cdefs.in.h: Rename from lib/getopt_cdefs.in.h. + * lib/getopt-core.h: Rename from lib/getopt_core.h. + * lib/getopt-ext.h: Rename from lib/getopt_ext.h. + * lib/getopt-pfx-core.h: Rename from lib/getopt_pfx_core.h. + * lib/getopt-pfx-ext.h: Rename from lib/getopt_pfx_ext.h. + All uses changed. + getopt: port recent getopt changes to macOS Problem reported by Harald Maier (Bug#26398). The macOS C compiler uses __nonnull for its own purposes and that diff --git a/lib/getopt-cdefs.in.h b/lib/getopt-cdefs.in.h new file mode 100644 index 0000000..8984adb --- /dev/null +++ b/lib/getopt-cdefs.in.h @@ -0,0 +1,67 @@ +/* getopt-on-non-glibc compatibility macros. + Copyright (C) 1989-2017 Free Software Foundation, Inc. + This file is part of gnulib. + Unlike most of the getopt implementation, it is NOT shared + with the GNU C Library. + + gnulib is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + gnulib 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with gnulib; if not, see + . */ + +#ifndef _GETOPT_CDEFS_H +#define _GETOPT_CDEFS_H 1 + +/* This header should not be used directly; include getopt.h or + unistd.h instead. It does not have a protective #error, because + the guard macro for getopt.h in gnulib is not fixed. */ + +/* getopt-core.h and getopt-ext.h are shared with GNU libc, and expect + a number of the internal macros supplied to GNU libc's headers by + sys/cdefs.h. Provide fallback definitions for all of them. */ +#if @HAVE_SYS_CDEFS_H@ +# include +#endif + +#ifndef __BEGIN_DECLS +# ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# else +# define __BEGIN_DECLS /* nothing */ +# endif +#endif +#ifndef __END_DECLS +# ifdef __cplusplus +# define __END_DECLS } +# else +# define __END_DECLS /* nothing */ +# endif +#endif + +#ifndef __GNUC_PREREQ +# if defined __GNUC__ && defined __GNUC_VERSION__ +# define __GNUC_PREREQ(maj, min) \ + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) +# else +# define __GNUC_PREREQ(maj, min) 0 +# endif +#endif + +#ifndef __THROW +# if defined __cplusplus && __GNUC_PREREQ (2,8) +# define __THROW throw () +# else +# define __THROW +# endif +#endif + +#endif /* _GETOPT_CDEFS_H */ diff --git a/lib/getopt-core.h b/lib/getopt-core.h new file mode 100644 index 0000000..8c9eb51 --- /dev/null +++ b/lib/getopt-core.h @@ -0,0 +1,96 @@ +/* Declarations for getopt (basic, portable features only). + Copyright (C) 1989-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library and is also part of gnulib. + Patches to this file should be submitted to both projects. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _GETOPT_CORE_H +#define _GETOPT_CORE_H 1 + +/* This header should not be used directly; include getopt.h or + unistd.h instead. Unlike most bits headers, it does not have + a protective #error, because the guard macro for getopt.h in + gnulib is not fixed. */ + +__BEGIN_DECLS + +/* 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; + +/* 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. + + For standards compliance, the 'argv' argument has the type + char *const *, but this is inaccurate; if argument permutation is + enabled, the argv array (not the strings it points to) must be + writable. */ + +extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) + __THROW _GL_ARG_NONNULL ((2, 3)); + +__END_DECLS + +#endif /* _GETOPT_CORE_H */ diff --git a/lib/getopt-ext.h b/lib/getopt-ext.h new file mode 100644 index 0000000..94190df --- /dev/null +++ b/lib/getopt-ext.h @@ -0,0 +1,77 @@ +/* Declarations for getopt (GNU extensions). + Copyright (C) 1989-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library and is also part of gnulib. + Patches to this file should be submitted to both projects. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _GETOPT_EXT_H +#define _GETOPT_EXT_H 1 + +/* This header should not be used directly; include getopt.h instead. + Unlike most bits headers, it does not have a protective #error, + because the guard macro for getopt.h in gnulib is not fixed. */ + +__BEGIN_DECLS + +/* 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. */ + +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; +}; + +/* Names for the values of the 'has_arg' field of 'struct option'. */ + +#define no_argument 0 +#define required_argument 1 +#define optional_argument 2 + +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)); + +__END_DECLS + +#endif /* _GETOPT_EXT_H */ diff --git a/lib/getopt-pfx-core.h b/lib/getopt-pfx-core.h new file mode 100644 index 0000000..155c116 --- /dev/null +++ b/lib/getopt-pfx-core.h @@ -0,0 +1,54 @@ +/* getopt (basic, portable features) gnulib wrapper header. + Copyright (C) 1989-2017 Free Software Foundation, Inc. + This file is part of gnulib. + Unlike most of the getopt implementation, it is NOT shared + with the GNU C Library. + + gnulib is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + gnulib 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with gnulib; if not, see + . */ + +#ifndef _GETOPT_PFX_CORE_H +#define _GETOPT_PFX_CORE_H 1 + +/* This header should not be used directly; include getopt.h or + unistd.h instead. It does not have a protective #error, because + the guard macro for getopt.h in gnulib is not fixed. */ + +/* Standalone applications should #define __GETOPT_PREFIX to an + identifier that prefixes the external functions and variables + defined in getopt-core.h and getopt-ext.h. Systematically + rename identifiers so that they do not collide with the system + functions and variables. Renaming avoids problems with some + compilers and linkers. */ +#ifdef __GETOPT_PREFIX +# ifndef __GETOPT_ID +# 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) +# endif +# undef getopt +# undef optarg +# undef opterr +# undef optind +# undef optopt +# define getopt __GETOPT_ID (getopt) +# define optarg __GETOPT_ID (optarg) +# define opterr __GETOPT_ID (opterr) +# define optind __GETOPT_ID (optind) +# define optopt __GETOPT_ID (optopt) +#endif + +#include + +#endif /* _GETOPT_PFX_CORE_H */ diff --git a/lib/getopt-pfx-ext.h b/lib/getopt-pfx-ext.h new file mode 100644 index 0000000..2f86b23 --- /dev/null +++ b/lib/getopt-pfx-ext.h @@ -0,0 +1,64 @@ +/* getopt (GNU extensions) gnulib wrapper header. + Copyright (C) 1989-2017 Free Software Foundation, Inc. + This file is part of gnulib. + Unlike most of the getopt implementation, it is NOT shared + with the GNU C Library. + + gnulib is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + gnulib 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with gnulib; if not, see + . */ + +#ifndef _GETOPT_PFX_EXT_H +#define _GETOPT_PFX_EXT_H 1 + +/* This header should not be used directly; include getopt.h instead. + It does not have a protective #error, because the guard macro for + getopt.h in gnulib is not fixed. */ + +/* Standalone applications should #define __GETOPT_PREFIX to an + identifier that prefixes the external functions and variables + defined in getopt-core.h and getopt-ext.h. Systematically + rename identifiers so that they do not collide with the system + functions and variables. Renaming avoids problems with some + compilers and linkers. */ +#ifdef __GETOPT_PREFIX +# ifndef __GETOPT_ID +# 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) +# endif +# undef getopt_long +# undef getopt_long_only +# undef option +# define getopt_long __GETOPT_ID (getopt_long) +# define getopt_long_only __GETOPT_ID (getopt_long_only) +# define option __GETOPT_ID (option) +#endif + +/* Standalone applications get correct prototypes for getopt_long and + getopt_long_only; they declare "char **argv". For backward + compatibility with old applications, if __GETOPT_PREFIX is not + defined, we supply GNU-libc-compatible, but incorrect, prototypes + using "char *const *argv". (GNU libc is stuck with the incorrect + prototypes, as they are baked into older versions of LSB.) */ +#ifndef __getopt_argv_const +# if defined __GETOPT_PREFIX +# define __getopt_argv_const /* empty */ +# else +# define __getopt_argv_const const +# endif +#endif + +#include + +#endif /* _GETOPT_PFX_EXT_H */ diff --git a/lib/getopt.in.h b/lib/getopt.in.h index 9f84c27..bef07e9 100644 --- a/lib/getopt.in.h +++ b/lib/getopt.in.h @@ -38,7 +38,7 @@ /* Standalone applications should #define __GETOPT_PREFIX to an identifier that prefixes the external functions and variables - defined in getopt_core.h and getopt_ext.h. When this happens, + defined in getopt-core.h and getopt-ext.h. 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 , we have already included it). */ @@ -54,8 +54,8 @@ /* The definition of _GL_ARG_NONNULL is copied here. */ -#include -#include -#include +#include +#include +#include #endif /* address@hidden@_GETOPT_H */ diff --git a/lib/getopt_cdefs.in.h b/lib/getopt_cdefs.in.h deleted file mode 100644 index 54da28d..0000000 --- a/lib/getopt_cdefs.in.h +++ /dev/null @@ -1,67 +0,0 @@ -/* getopt-on-non-glibc compatibility macros. - Copyright (C) 1989-2017 Free Software Foundation, Inc. - This file is part of gnulib. - Unlike most of the getopt implementation, it is NOT shared - with the GNU C Library. - - gnulib is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - gnulib 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with gnulib; if not, see - . */ - -#ifndef _GETOPT_CDEFS_H -#define _GETOPT_CDEFS_H 1 - -/* This header should not be used directly; include getopt.h or - unistd.h instead. It does not have a protective #error, because - the guard macro for getopt.h in gnulib is not fixed. */ - -/* getopt_core.h and getopt_ext.h are shared with GNU libc, and expect - a number of the internal macros supplied to GNU libc's headers by - sys/cdefs.h. Provide fallback definitions for all of them. */ -#if @HAVE_SYS_CDEFS_H@ -# include -#endif - -#ifndef __BEGIN_DECLS -# ifdef __cplusplus -# define __BEGIN_DECLS extern "C" { -# else -# define __BEGIN_DECLS /* nothing */ -# endif -#endif -#ifndef __END_DECLS -# ifdef __cplusplus -# define __END_DECLS } -# else -# define __END_DECLS /* nothing */ -# endif -#endif - -#ifndef __GNUC_PREREQ -# if defined __GNUC__ && defined __GNUC_VERSION__ -# define __GNUC_PREREQ(maj, min) \ - ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) -# else -# define __GNUC_PREREQ(maj, min) 0 -# endif -#endif - -#ifndef __THROW -# if defined __cplusplus && __GNUC_PREREQ (2,8) -# define __THROW throw () -# else -# define __THROW -# endif -#endif - -#endif /* getopt_cdefs.h */ diff --git a/lib/getopt_core.h b/lib/getopt_core.h deleted file mode 100644 index 76ef466..0000000 --- a/lib/getopt_core.h +++ /dev/null @@ -1,96 +0,0 @@ -/* Declarations for getopt (basic, portable features only). - Copyright (C) 1989-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library and is also part of gnulib. - Patches to this file should be submitted to both projects. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#ifndef _GETOPT_CORE_H -#define _GETOPT_CORE_H 1 - -/* This header should not be used directly; include getopt.h or - unistd.h instead. Unlike most bits headers, it does not have - a protective #error, because the guard macro for getopt.h in - gnulib is not fixed. */ - -__BEGIN_DECLS - -/* 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; - -/* 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. - - For standards compliance, the 'argv' argument has the type - char *const *, but this is inaccurate; if argument permutation is - enabled, the argv array (not the strings it points to) must be - writable. */ - -extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) - __THROW _GL_ARG_NONNULL ((2, 3)); - -__END_DECLS - -#endif /* getopt_core.h */ diff --git a/lib/getopt_ext.h b/lib/getopt_ext.h deleted file mode 100644 index a3a6750..0000000 --- a/lib/getopt_ext.h +++ /dev/null @@ -1,77 +0,0 @@ -/* Declarations for getopt (GNU extensions). - Copyright (C) 1989-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library and is also part of gnulib. - Patches to this file should be submitted to both projects. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#ifndef _GETOPT_EXT_H -#define _GETOPT_EXT_H 1 - -/* This header should not be used directly; include getopt.h instead. - Unlike most bits headers, it does not have a protective #error, - because the guard macro for getopt.h in gnulib is not fixed. */ - -__BEGIN_DECLS - -/* 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. */ - -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; -}; - -/* Names for the values of the 'has_arg' field of 'struct option'. */ - -#define no_argument 0 -#define required_argument 1 -#define optional_argument 2 - -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)); - -__END_DECLS - -#endif /* getopt_ext.h */ diff --git a/lib/getopt_pfx_core.h b/lib/getopt_pfx_core.h deleted file mode 100644 index b730d2d..0000000 --- a/lib/getopt_pfx_core.h +++ /dev/null @@ -1,54 +0,0 @@ -/* getopt (basic, portable features) gnulib wrapper header. - Copyright (C) 1989-2017 Free Software Foundation, Inc. - This file is part of gnulib. - Unlike most of the getopt implementation, it is NOT shared - with the GNU C Library. - - gnulib is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - gnulib 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with gnulib; if not, see - . */ - -#ifndef _GETOPT_PFX_CORE_H -#define _GETOPT_PFX_CORE_H 1 - -/* This header should not be used directly; include getopt.h or - unistd.h instead. It does not have a protective #error, because - the guard macro for getopt.h in gnulib is not fixed. */ - -/* Standalone applications should #define __GETOPT_PREFIX to an - identifier that prefixes the external functions and variables - defined in getopt_core.h and getopt_ext.h. Systematically - rename identifiers so that they do not collide with the system - functions and variables. Renaming avoids problems with some - compilers and linkers. */ -#ifdef __GETOPT_PREFIX -# ifndef __GETOPT_ID -# 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) -# endif -# undef getopt -# undef optarg -# undef opterr -# undef optind -# undef optopt -# define getopt __GETOPT_ID (getopt) -# define optarg __GETOPT_ID (optarg) -# define opterr __GETOPT_ID (opterr) -# define optind __GETOPT_ID (optind) -# define optopt __GETOPT_ID (optopt) -#endif - -#include - -#endif /* getopt_pfx_core.h */ diff --git a/lib/getopt_pfx_ext.h b/lib/getopt_pfx_ext.h deleted file mode 100644 index 8c1691a..0000000 --- a/lib/getopt_pfx_ext.h +++ /dev/null @@ -1,64 +0,0 @@ -/* getopt (GNU extensions) gnulib wrapper header. - Copyright (C) 1989-2017 Free Software Foundation, Inc. - This file is part of gnulib. - Unlike most of the getopt implementation, it is NOT shared - with the GNU C Library. - - gnulib is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of - the License, or (at your option) any later version. - - gnulib 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with gnulib; if not, see - . */ - -#ifndef _GETOPT_PFX_EXT_H -#define _GETOPT_PFX_EXT_H 1 - -/* This header should not be used directly; include getopt.h instead. - It does not have a protective #error, because the guard macro for - getopt.h in gnulib is not fixed. */ - -/* Standalone applications should #define __GETOPT_PREFIX to an - identifier that prefixes the external functions and variables - defined in getopt_core.h and getopt_ext.h. Systematically - rename identifiers so that they do not collide with the system - functions and variables. Renaming avoids problems with some - compilers and linkers. */ -#ifdef __GETOPT_PREFIX -# ifndef __GETOPT_ID -# 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) -# endif -# undef getopt_long -# undef getopt_long_only -# undef option -# define getopt_long __GETOPT_ID (getopt_long) -# define getopt_long_only __GETOPT_ID (getopt_long_only) -# define option __GETOPT_ID (option) -#endif - -/* Standalone applications get correct prototypes for getopt_long and - getopt_long_only; they declare "char **argv". For backward - compatibility with old applications, if __GETOPT_PREFIX is not - defined, we supply GNU-libc-compatible, but incorrect, prototypes - using "char *const *argv". (GNU libc is stuck with the incorrect - prototypes, as they are baked into older versions of LSB.) */ -#ifndef __getopt_argv_const -# if defined __GETOPT_PREFIX -# define __getopt_argv_const /* empty */ -# else -# define __getopt_argv_const const -# endif -#endif - -#include - -#endif /* getopt_pfx_ext.h */ diff --git a/lib/unistd.in.h b/lib/unistd.in.h index de619dc..d9f741f 100644 --- a/lib/unistd.in.h +++ b/lib/unistd.in.h @@ -137,8 +137,8 @@ /* Get getopt(), optarg, optind, opterr, optopt. But avoid namespace pollution on glibc systems. */ #if @GNULIB_UNISTD_H_GETOPT@ && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT -# include -# include +# include +# include #endif #ifndef _GL_INLINE_HEADER_BEGIN diff --git a/m4/getopt.m4 b/m4/getopt.m4 index d900769..ac3b38e 100644 --- a/m4/getopt.m4 +++ b/m4/getopt.m4 @@ -1,4 +1,4 @@ -# getopt.m4 serial 45 +# getopt.m4 serial 46 dnl Copyright (C) 2002-2006, 2008-2017 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -364,7 +364,7 @@ AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER], [Define to rpl_ if the getopt replacement functions and variables should be used.]) GETOPT_H=getopt.h - GETOPT_CDEFS_H=getopt_cdefs.h + GETOPT_CDEFS_H=getopt-cdefs.h AC_SUBST([GETOPT_H]) AC_SUBST([GETOPT_CDEFS_H]) ]) diff --git a/modules/getopt-posix b/modules/getopt-posix index 2208756..a782563 100644 --- a/modules/getopt-posix +++ b/modules/getopt-posix @@ -5,12 +5,12 @@ Files: lib/getopt.c lib/getopt1.c lib/getopt.in.h -lib/getopt_cdefs.in.h -lib/getopt_core.h -lib/getopt_ext.h +lib/getopt-cdefs.in.h +lib/getopt-core.h +lib/getopt-ext.h +lib/getopt-pfx-core.h +lib/getopt-pfx-ext.h lib/getopt_int.h -lib/getopt_pfx_core.h -lib/getopt_pfx_ext.h m4/getopt.m4 Depends-on: @@ -49,15 +49,15 @@ getopt.h: getopt.in.h $(top_builddir)/config.status } > address@hidden && \ mv -f address@hidden $@ -getopt_cdefs.h: getopt_cdefs.in.h $(top_builddir)/config.status +getopt-cdefs.h: getopt-cdefs.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f address@hidden $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''HAVE_SYS_CDEFS_H''@|$(HAVE_SYS_CDEFS_H)|g' \ - < $(srcdir)/getopt_cdefs.in.h; \ + < $(srcdir)/getopt-cdefs.in.h; \ } > address@hidden && \ mv -f address@hidden $@ -MOSTLYCLEANFILES += getopt.h getopt.h-t getopt_cdefs.h getopt_cdefs.h-t +MOSTLYCLEANFILES += getopt.h getopt.h-t getopt-cdefs.h getopt-cdefs.h-t Include: -- 2.7.4