2008-03-07 Jeff Johnston <jjohnstn@redhat.com>
* libc/include/getopt.h: Hide newlib extensions under the __need_getopt_newlib flag. * libc/stdlib/getopt.c: #define __need_getopt_newlib before including getopt.h. Put entire code under !HAVE_GETOPT to support platforms with their own getopt implementation. * configure.host: Specify HAVE_GETOPT for x86-linux.
This commit is contained in:
parent
0382d26727
commit
c622842865
|
@ -1,3 +1,12 @@
|
|||
2008-03-07 Jeff Johnston <jjohnstn@redhat.com>
|
||||
|
||||
* libc/include/getopt.h: Hide newlib extensions under
|
||||
the __need_getopt_newlib flag.
|
||||
* libc/stdlib/getopt.c: #define __need_getopt_newlib before including
|
||||
getopt.h. Put entire code under !HAVE_GETOPT to support platforms
|
||||
with their own getopt implementation.
|
||||
* configure.host: Specify HAVE_GETOPT for x86-linux.
|
||||
|
||||
2008-03-07 Jeff Johnston <jjohnstn@redhat.com>
|
||||
|
||||
* libc/include/sys/reent.h(_REENT_SMALL_CHECK_INIT): Specify
|
||||
|
|
|
@ -414,6 +414,7 @@ case "${host}" in
|
|||
newlib_cflags="${newlib_cflags} -Wall"
|
||||
newlib_cflags="${newlib_cflags} -D_I386MACH_ALLOW_HW_INTERRUPTS"
|
||||
newlib_cflags="${newlib_cflags} -DHAVE_FCNTL"
|
||||
newlib_cflags="${newlib_cflags} -DHAVE_GETOPT"
|
||||
# --- Required when building a shared library ------------------------
|
||||
newlib_cflags="${newlib_cflags} -fPIC -D_I386MACH_NEED_SOTYPE_FUNCTION"
|
||||
# --- The three lines below are optional ------------------------------
|
||||
|
|
|
@ -82,6 +82,7 @@ Gregory Pietsch's current e-mail address:
|
|||
gpietsch@comcast.net
|
||||
****************************************************************************/
|
||||
|
||||
/* This is a glibc-extension header file. */
|
||||
|
||||
#ifndef GETOPT_H
|
||||
#define GETOPT_H
|
||||
|
@ -90,23 +91,9 @@ gpietsch@comcast.net
|
|||
|
||||
/* include files needed by this include file */
|
||||
|
||||
/* macros defined by this include file */
|
||||
#define NO_ARG 0
|
||||
#define REQUIRED_ARG 1
|
||||
#define OPTIONAL_ARG 2
|
||||
|
||||
/* For glibc compatibility. */
|
||||
#define no_argument NO_ARG
|
||||
#define required_argument REQUIRED_ARG
|
||||
#define optional_argument OPTIONAL_ARG
|
||||
|
||||
/* The GETOPT_DATA_INITIALIZER macro is used to initialize a statically-
|
||||
allocated variable of type struct getopt_data. */
|
||||
#define GETOPT_DATA_INITIALIZER {0,0,0,0,0}
|
||||
/* These #defines are to keep the namespace clear... */
|
||||
#define getopt_r __getopt_r
|
||||
#define getopt_long_r __getopt_long_r
|
||||
#define getopt_long_only_r __getopt_long_only_r
|
||||
#define no_argument 0
|
||||
#define required_argument 1
|
||||
#define optional_argument 2
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
|
@ -130,6 +117,25 @@ extern "C"
|
|||
|
||||
};
|
||||
|
||||
/* While getopt.h is a glibc extension, the following are newlib extensions.
|
||||
* They are optionally included via the __need_getopt_newlib flag. */
|
||||
|
||||
#ifdef __need_getopt_newlib
|
||||
|
||||
/* macros defined by this include file */
|
||||
#define NO_ARG no_argument
|
||||
#define REQUIRED_ARG required_argument
|
||||
#define OPTIONAL_ARG optional_argument
|
||||
|
||||
/* The GETOPT_DATA_INITIALIZER macro is used to initialize a statically-
|
||||
allocated variable of type struct getopt_data. */
|
||||
#define GETOPT_DATA_INITIALIZER {0,0,0,0,0}
|
||||
|
||||
/* These #defines are to make accessing the reentrant functions easier. */
|
||||
#define getopt_r __getopt_r
|
||||
#define getopt_long_r __getopt_long_r
|
||||
#define getopt_long_only_r __getopt_long_only_r
|
||||
|
||||
/* The getopt_data structure is for reentrancy. Its members are similar to
|
||||
the externally-defined variables. */
|
||||
typedef struct getopt_data
|
||||
|
@ -138,6 +144,8 @@ extern "C"
|
|||
int optind, opterr, optopt, optwhere;
|
||||
} getopt_data;
|
||||
|
||||
#endif /* __need_getopt_newlib */
|
||||
|
||||
/* externally-defined variables */
|
||||
extern char *optarg;
|
||||
extern int optind;
|
||||
|
|
|
@ -83,11 +83,13 @@ Gregory Pietsch's current e-mail address:
|
|||
gpietsch@comcast.net
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef HAVE_GETOPT
|
||||
|
||||
/* include files */
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#define __need_getopt_newlib
|
||||
#include <getopt.h>
|
||||
|
||||
/* macros */
|
||||
|
@ -472,4 +474,6 @@ __getopt_long_only_r (int argc, char *const argv[], const char *shortopts,
|
|||
return getopt_internal (argc, argv, shortopts, longopts, longind, 1, data);
|
||||
}
|
||||
|
||||
#endif /* !HAVE_GETOPT */
|
||||
|
||||
/* end of file GETOPT.C */
|
||||
|
|
Loading…
Reference in New Issue