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