Statistics
| Revision:

gvsig-raster / libjni-potrace / trunk / libjni-potrace / resources / potrace-1.8 / src / getopt1.c @ 1780

History | View | Annotate | Download (4.44 KB)

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 Library General Public License as
8
   published by the Free Software Foundation; either version 2 of the
9
   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
   Library General Public License for more details.
15

16
   You should have received a copy of the GNU Library General Public
17
   License along with the GNU C Library; see the file COPYING.LIB.  If not,
18
   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19
   Boston, MA 02111-1307, USA.  */
20
 
21
#ifdef HAVE_CONFIG_H
22
#include <config.h>
23
#endif
24

    
25
#include "getopt.h"
26

    
27
#if !defined __STDC__ || !__STDC__
28
/* This is a separate conditional since some stdc systems
29
   reject `defined (const)'.  */
30
#ifndef const
31
#define const
32
#endif
33
#endif
34

    
35
#include <stdio.h>
36

    
37
/* Comment out all this code if we are using the GNU C Library, and are not
38
   actually compiling the library itself.  This code is part of the GNU C
39
   Library, but also included in many other GNU distributions.  Compiling
40
   and linking in this code is a waste when using the GNU C library
41
   (especially if it is a shared library).  Rather than having every GNU
42
   program understand `configure --with-gnu-libc' and omit the object files,
43
   it is simpler to just do this in the source for each such file.  */
44

    
45
#define GETOPT_INTERFACE_VERSION 2
46
#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
47
#include <gnu-versions.h>
48
#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
49
#define ELIDE_CODE
50
#endif
51
#endif
52

    
53
#ifndef ELIDE_CODE
54

    
55

    
56
/* This needs to come after some library #include
57
   to get __GNU_LIBRARY__ defined.  */
58
#ifdef __GNU_LIBRARY__
59
#include <stdlib.h>
60
#endif
61

    
62
#ifndef        NULL
63
#define NULL 0
64
#endif
65

    
66
int
67
getopt_long (argc, argv, options, long_options, opt_index)
68
     int argc;
69
     char *const *argv;
70
     const char *options;
71
     const struct option *long_options;
72
     int *opt_index;
73
{
74
  return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
75
}
76

    
77
/* Like getopt_long, but '-' as well as '--' can indicate a long option.
78
   If an option that starts with '-' (not '--') doesn't match a long option,
79
   but does match a short option, it is parsed as a short option
80
   instead.  */
81

    
82
int
83
getopt_long_only (argc, argv, options, long_options, opt_index)
84
     int argc;
85
     char *const *argv;
86
     const char *options;
87
     const struct option *long_options;
88
     int *opt_index;
89
{
90
  return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
91
}
92

    
93

    
94
#endif        /* Not ELIDE_CODE.  */
95
 
96
#ifdef TEST
97

    
98
#include <stdio.h>
99

    
100
int
101
main (argc, argv)
102
     int argc;
103
     char **argv;
104
{
105
  int c;
106
  int digit_optind = 0;
107

    
108
  while (1)
109
    {
110
      int this_option_optind = optind ? optind : 1;
111
      int option_index = 0;
112
      static struct option long_options[] =
113
      {
114
        {"add", 1, 0, 0},
115
        {"append", 0, 0, 0},
116
        {"delete", 1, 0, 0},
117
        {"verbose", 0, 0, 0},
118
        {"create", 0, 0, 0},
119
        {"file", 1, 0, 0},
120
        {0, 0, 0, 0}
121
      };
122

    
123
      c = getopt_long (argc, argv, "abc:d:0123456789",
124
                       long_options, &option_index);
125
      if (c == -1)
126
        break;
127

    
128
      switch (c)
129
        {
130
        case 0:
131
          printf ("option %s", long_options[option_index].name);
132
          if (optarg)
133
            printf (" with arg %s", optarg);
134
          printf ("\n");
135
          break;
136

    
137
        case '0':
138
        case '1':
139
        case '2':
140
        case '3':
141
        case '4':
142
        case '5':
143
        case '6':
144
        case '7':
145
        case '8':
146
        case '9':
147
          if (digit_optind != 0 && digit_optind != this_option_optind)
148
            printf ("digits occur in two different argv-elements.\n");
149
          digit_optind = this_option_optind;
150
          printf ("option %c\n", c);
151
          break;
152

    
153
        case 'a':
154
          printf ("option a\n");
155
          break;
156

    
157
        case 'b':
158
          printf ("option b\n");
159
          break;
160

    
161
        case 'c':
162
          printf ("option c with value `%s'\n", optarg);
163
          break;
164

    
165
        case 'd':
166
          printf ("option d with value `%s'\n", optarg);
167
          break;
168

    
169
        case '?':
170
          break;
171

    
172
        default:
173
          printf ("?? getopt returned character code 0%o ??\n", c);
174
        }
175
    }
176

    
177
  if (optind < argc)
178
    {
179
      printf ("non-option ARGV-elements: ");
180
      while (optind < argc)
181
        printf ("%s ", argv[optind++]);
182
      printf ("\n");
183
    }
184

    
185
  exit (0);
186
}
187

    
188
#endif /* TEST */