source: git/old_modgen/modgen/getopt1.c @ a3f0fea

spielwiese
Last change on this file since a3f0fea was a3f0fea, checked in by Reimer Behrends <behrends@…>, 5 years ago
Modify variable declarions for pSingular.
  • Property mode set to 100644
File size: 4.4 KB
Line 
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
3     Free Software Foundation, Inc.
4   This file is part of the GNU C Library.
5
6   The GNU C Library is free software; you can redistribute it and/or
7   modify it under the terms of the GNU Lesser General Public
8   License as published by the Free Software Foundation; either
9   version 2.1 of the License, or (at your option) any later version.
10
11   The GNU C Library is distributed in the hope that it will be useful,
12   but WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14   Lesser General Public License for more details.
15
16   You should have received a copy of the GNU Lesser General Public
17   License along with the GNU C Library; if not, write to the Free
18   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19   02111-1307 USA.  */
20
21
22#include <config.h>
23
24
25#ifndef HAVE_GETOPT_LONG
26#include "my_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
67int
68getopt_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     VAR 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
83int
84getopt_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     VAR 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
101int
102main (argc, argv)
103     int argc;
104     VAR 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_VAR 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 */
190#endif
Note: See TracBrowser for help on using the repository browser.