"Fossies" - the Fresh Open Source Software Archive 
Member "dehtml-1.8/getopt1.c" (11 Jan 2011, 4510 Bytes) of package /linux/www/old/dehtml-1.8.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "getopt1.c" see the
Fossies "Dox" file reference documentation.
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 Free Software Foundation, Inc.
3
4 NOTE: The canonical source of this file is maintained with the GNU C Library.
5 Bugs can be reported to bug-glibc@gnu.org.
6
7 This program is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by the
9 Free Software Foundation; either version 2, or (at your option) any
10 later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
20 USA. */
21
22 #ifdef HAVE_CONFIG_H
23 #include "config.h"
24 #endif
25
26 #include "getopt.h"
27
28 #if !defined (__STDC__) || !__STDC__
29 /* This is a separate conditional since some stdc systems
30 reject `defined (const)'. */
31 #ifndef const
32 #define const
33 #endif
34 #endif
35
36 #include <stdio.h>
37
38 /* Comment out all this code if we are using the GNU C Library, and are not
39 actually compiling the library itself. This code is part of the GNU C
40 Library, but also included in many other GNU distributions. Compiling
41 and linking in this code is a waste when using the GNU C library
42 (especially if it is a shared library). Rather than having every GNU
43 program understand `configure --with-gnu-libc' and omit the object files,
44 it is simpler to just do this in the source for each such file. */
45
46 #define GETOPT_INTERFACE_VERSION 2
47 #if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2
48 #include <gnu-versions.h>
49 #if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
50 #define ELIDE_CODE
51 #endif
52 #endif
53
54 #ifndef ELIDE_CODE
55
56
57 /* This needs to come after some library #include
58 to get __GNU_LIBRARY__ defined. */
59 #ifdef __GNU_LIBRARY__
60 #include <stdlib.h>
61 #endif
62
63 #ifndef NULL
64 #define NULL 0
65 #endif
66
67 int
68 getopt_long (argc, argv, options, long_options, opt_index)
69 int argc;
70 char *const *argv;
71 const char *options;
72 const struct option *long_options;
73 int *opt_index;
74 {
75 return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
76 }
77
78 /* Like getopt_long, but '-' as well as '--' can indicate a long option.
79 If an option that starts with '-' (not '--') doesn't match a long option,
80 but does match a short option, it is parsed as a short option
81 instead. */
82
83 int
84 getopt_long_only (argc, argv, options, long_options, opt_index)
85 int argc;
86 char *const *argv;
87 const char *options;
88 const struct option *long_options;
89 int *opt_index;
90 {
91 return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
92 }
93
94
95 #endif /* Not ELIDE_CODE. */
96
97 #ifdef TEST
98
99 #include <stdio.h>
100
101 int
102 main (argc, argv)
103 int argc;
104 char **argv;
105 {
106 int c;
107 int digit_optind = 0;
108
109 while (1)
110 {
111 int this_option_optind = optind ? optind : 1;
112 int option_index = 0;
113 static struct option long_options[] =
114 {
115 {"add", 1, 0, 0},
116 {"append", 0, 0, 0},
117 {"delete", 1, 0, 0},
118 {"verbose", 0, 0, 0},
119 {"create", 0, 0, 0},
120 {"file", 1, 0, 0},
121 {0, 0, 0, 0}
122 };
123
124 c = getopt_long (argc, argv, "abc:d:0123456789",
125 long_options, &option_index);
126 if (c == -1)
127 break;
128
129 switch (c)
130 {
131 case 0:
132 printf ("option %s", long_options[option_index].name);
133 if (optarg)
134 printf (" with arg %s", optarg);
135 printf ("\n");
136 break;
137
138 case '0':
139 case '1':
140 case '2':
141 case '3':
142 case '4':
143 case '5':
144 case '6':
145 case '7':
146 case '8':
147 case '9':
148 if (digit_optind != 0 && digit_optind != this_option_optind)
149 printf ("digits occur in two different argv-elements.\n");
150 digit_optind = this_option_optind;
151 printf ("option %c\n", c);
152 break;
153
154 case 'a':
155 printf ("option a\n");
156 break;
157
158 case 'b':
159 printf ("option b\n");
160 break;
161
162 case 'c':
163 printf ("option c with value `%s'\n", optarg);
164 break;
165
166 case 'd':
167 printf ("option d with value `%s'\n", optarg);
168 break;
169
170 case '?':
171 break;
172
173 default:
174 printf ("?? getopt returned character code 0%o ??\n", c);
175 }
176 }
177
178 if (optind < argc)
179 {
180 printf ("non-option ARGV-elements: ");
181 while (optind < argc)
182 printf ("%s ", argv[optind++]);
183 printf ("\n");
184 }
185
186 exit (0);
187 }
188
189 #endif /* TEST */