summaryrefslogtreecommitdiffstats
path: root/newlib/libc/include/getopt.h
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/include/getopt.h')
-rw-r--r--newlib/libc/include/getopt.h42
1 files changed, 25 insertions, 17 deletions
diff --git a/newlib/libc/include/getopt.h b/newlib/libc/include/getopt.h
index f91875714..13cf99c5f 100644
--- a/newlib/libc/include/getopt.h
+++ b/newlib/libc/include/getopt.h
@@ -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;