aboutsummaryrefslogtreecommitdiffstats
path: root/lib-src/getopt1.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib-src/getopt1.c')
-rw-r--r--lib-src/getopt1.c81
1 files changed, 30 insertions, 51 deletions
diff --git a/lib-src/getopt1.c b/lib-src/getopt1.c
index 4ec1e50b830..8aa9b183578 100644
--- a/lib-src/getopt1.c
+++ b/lib-src/getopt1.c
@@ -1,6 +1,6 @@
1/* getopt_long and getopt_long_only entry points for GNU getopt. 1/* getopt_long and getopt_long_only entry points for GNU getopt.
2 Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98 2 Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997,
3 Free Software Foundation, Inc. 3 1998, 2004, 2005 Free Software Foundation, Inc.
4 This file is part of the GNU C Library. 4 This file is part of the GNU C Library.
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
@@ -26,36 +26,10 @@
26#else 26#else
27# include "getopt.h" 27# include "getopt.h"
28#endif 28#endif
29 29#include "getopt_int.h"
30#if !defined __STDC__ || !__STDC__
31/* This is a separate conditional since some stdc systems
32 reject `defined (const)'. */
33#ifndef const
34#define const
35#endif
36#endif
37 30
38#include <stdio.h> 31#include <stdio.h>
39 32
40/* Comment out all this code if we are using the GNU C Library, and are not
41 actually compiling the library itself. This code is part of the GNU C
42 Library, but also included in many other GNU distributions. Compiling
43 and linking in this code is a waste when using the GNU C library
44 (especially if it is a shared library). Rather than having every GNU
45 program understand `configure --with-gnu-libc' and omit the object files,
46 it is simpler to just do this in the source for each such file. */
47
48#define GETOPT_INTERFACE_VERSION 2
49#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
50#include <gnu-versions.h>
51#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
52#define ELIDE_CODE
53#endif
54#endif
55
56#ifndef ELIDE_CODE
57
58
59/* This needs to come after some library #include 33/* This needs to come after some library #include
60 to get __GNU_LIBRARY__ defined. */ 34 to get __GNU_LIBRARY__ defined. */
61#ifdef __GNU_LIBRARY__ 35#ifdef __GNU_LIBRARY__
@@ -67,14 +41,20 @@
67#endif 41#endif
68 42
69int 43int
70getopt_long (argc, argv, options, long_options, opt_index) 44getopt_long (int argc, char *__getopt_argv_const *argv, const char *options,
71 int argc; 45 const struct option *long_options, int *opt_index)
72 char *const *argv;
73 const char *options;
74 const struct option *long_options;
75 int *opt_index;
76{ 46{
77 return _getopt_internal (argc, argv, options, long_options, opt_index, 0); 47 return _getopt_internal (argc, (char **) argv, options, long_options,
48 opt_index, 0, 0);
49}
50
51int
52_getopt_long_r (int argc, char **argv, const char *options,
53 const struct option *long_options, int *opt_index,
54 struct _getopt_data *d)
55{
56 return _getopt_internal_r (argc, argv, options, long_options, opt_index,
57 0, 0, d);
78} 58}
79 59
80/* Like getopt_long, but '-' as well as '--' can indicate a long option. 60/* Like getopt_long, but '-' as well as '--' can indicate a long option.
@@ -83,31 +63,30 @@ getopt_long (argc, argv, options, long_options, opt_index)
83 instead. */ 63 instead. */
84 64
85int 65int
86getopt_long_only (argc, argv, options, long_options, opt_index) 66getopt_long_only (int argc, char *__getopt_argv_const *argv,
87 int argc; 67 const char *options,
88 char *const *argv; 68 const struct option *long_options, int *opt_index)
89 const char *options;
90 const struct option *long_options;
91 int *opt_index;
92{ 69{
93 return _getopt_internal (argc, argv, options, long_options, opt_index, 1); 70 return _getopt_internal (argc, (char **) argv, options, long_options,
71 opt_index, 1, 0);
94} 72}
95 73
96# ifdef _LIBC 74int
97libc_hidden_def (getopt_long) 75_getopt_long_only_r (int argc, char **argv, const char *options,
98libc_hidden_def (getopt_long_only) 76 const struct option *long_options, int *opt_index,
99# endif 77 struct _getopt_data *d)
78{
79 return _getopt_internal_r (argc, argv, options, long_options, opt_index,
80 1, 0, d);
81}
100 82
101#endif /* Not ELIDE_CODE. */
102 83
103#ifdef TEST 84#ifdef TEST
104 85
105#include <stdio.h> 86#include <stdio.h>
106 87
107int 88int
108main (argc, argv) 89main (int argc, char **argv)
109 int argc;
110 char **argv;
111{ 90{
112 int c; 91 int c;
113 int digit_optind = 0; 92 int digit_optind = 0;