~ubuntu-branches/ubuntu/trusty/bc/trusty

« back to all changes in this revision

Viewing changes to lib/getopt1.c

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2007-12-05 12:24:03 UTC
  • mfrom: (3.1.2 lenny)
  • Revision ID: james.westby@ubuntu.com-20071205122403-rv1a7x90ktu1wl95
Tags: 1.06.94-3ubuntu1
* Merge with Debian; remaining changes:
  - Make bc/dc notice read and write errors on its input and output.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* getopt_long and getopt_long_only entry points for GNU getopt.
2
 
   Copyright (C) 1987, 88, 89, 90, 91, 92, 1993, 1994
3
 
        Free Software Foundation, Inc.
4
 
 
5
 
This file is part of the GNU C Library.  Its master source is NOT part of
6
 
the C library, however.  The master source lives in /gd/gnu/lib.
7
 
 
8
 
The GNU C Library is free software; you can redistribute it and/or
9
 
modify it under the terms of the GNU Library General Public License as
10
 
published by the Free Software Foundation; either version 2 of the
11
 
License, or (at your option) any later version.
12
 
 
13
 
The GNU C Library is distributed in the hope that it will be useful,
14
 
but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16
 
Library General Public License for more details.
17
 
 
18
 
You should have received a copy of the GNU Library General Public
19
 
License along with the GNU C Library; see the file COPYING.LIB.  If
20
 
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
21
 
Cambridge, MA 02139, USA.  */
 
2
 
 
3
   Copyright (C) 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996,
 
4
   1997, 1998, 2003 Free Software Foundation, Inc.
 
5
 
 
6
   This file is part of the GNU C Library.
 
7
 
 
8
   This program is free software; you can redistribute it and/or modify
 
9
   it under the terms of the GNU General Public License as published by
 
10
   the Free Software Foundation; either version 2, or (at your option)
 
11
   any later version.
 
12
 
 
13
   This program is distributed in the hope that it will be useful,
 
14
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
16
   GNU General Public License for more details.
 
17
 
 
18
   You should have received a copy of the GNU General Public License along
 
19
   with this program; if not, write to the Free Software Foundation,
 
20
   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA.  */
22
21
 
23
22
#ifdef HAVE_CONFIG_H
24
23
#include <config.h>
25
24
#endif
26
25
 
27
 
#include "getopt.h"
28
 
 
29
 
#if !defined (__STDC__) || !__STDC__
30
 
/* This is a separate conditional since some stdc systems
31
 
   reject `defined (const)'.  */
32
 
#ifndef const
33
 
#define const
34
 
#endif
 
26
#ifdef _LIBC
 
27
# include <getopt.h>
 
28
#else
 
29
# include "getopt.h"
35
30
#endif
36
31
 
37
32
#include <stdio.h>
44
39
   program understand `configure --with-gnu-libc' and omit the object files,
45
40
   it is simpler to just do this in the source for each such file.  */
46
41
 
47
 
#if defined (_LIBC) || !defined (__GNU_LIBRARY__)
 
42
#define GETOPT_INTERFACE_VERSION 2
 
43
#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
 
44
#include <gnu-versions.h>
 
45
#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
 
46
#define ELIDE_CODE
 
47
#endif
 
48
#endif
 
49
 
 
50
#ifndef ELIDE_CODE
48
51
 
49
52
 
50
53
/* This needs to come after some library #include
51
54
   to get __GNU_LIBRARY__ defined.  */
52
55
#ifdef __GNU_LIBRARY__
53
56
#include <stdlib.h>
54
 
#else
55
 
char *getenv ();
56
57
#endif
57
58
 
58
59
#ifndef NULL
60
61
#endif
61
62
 
62
63
int
63
 
getopt_long (argc, argv, options, long_options, opt_index)
64
 
     int argc;
65
 
     char *const *argv;
66
 
     const char *options;
67
 
     const struct option *long_options;
68
 
     int *opt_index;
 
64
getopt_long (int argc,
 
65
             char *const *argv,
 
66
             const char *options,
 
67
             const struct option *long_options,
 
68
             int *opt_index)
69
69
{
70
70
  return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
71
71
}
76
76
   instead.  */
77
77
 
78
78
int
79
 
getopt_long_only (argc, argv, options, long_options, opt_index)
80
 
     int argc;
81
 
     char *const *argv;
82
 
     const char *options;
83
 
     const struct option *long_options;
84
 
     int *opt_index;
 
79
getopt_long_only (int argc,
 
80
                  char *const *argv,
 
81
                  const char *options,
 
82
                  const struct option *long_options,
 
83
                  int *opt_index)
85
84
{
86
85
  return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
87
86
}
88
87
 
 
88
# ifdef _LIBC
 
89
libc_hidden_def (getopt_long)
 
90
libc_hidden_def (getopt_long_only)
 
91
# endif
89
92
 
90
 
#endif  /* _LIBC or not __GNU_LIBRARY__.  */
 
93
#endif  /* Not ELIDE_CODE.  */
91
94
 
92
95
#ifdef TEST
93
96
 
94
97
#include <stdio.h>
95
98
 
96
99
int
97
 
main (argc, argv)
98
 
     int argc;
99
 
     char **argv;
 
100
main (int argc, char **argv)
100
101
{
101
102
  int c;
102
103
  int digit_optind = 0;
118
119
 
119
120
      c = getopt_long (argc, argv, "abc:d:0123456789",
120
121
                       long_options, &option_index);
121
 
      if (c == EOF)
 
122
      if (c == -1)
122
123
        break;
123
124
 
124
125
      switch (c)