Mercurial > emacs
annotate lib-src/getopt.c @ 56026:bb6720f21c54
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-396
Tweak arch tagging to make build/install-in-place less annoying
Previously, autoconf-created Makefiles and the like would contain
duplicate taglines (unfortunately, autoconf doesn't seem to have a
`strip in generated file' comment mechanism) leading to conflicts, and
installing in place would create unknown directories and copies of
source directories (leading to conflicts with the source directories).
This changeset makes all autoconf-processed files use explicit id-tags
and adds .arch-inventory entries to ignore installation directories.
author | Miles Bader <miles@gnu.org> |
---|---|
date | Fri, 11 Jun 2004 02:39:51 +0000 |
parents | 695cf19ef79e |
children | 23a17af379b1 375f2633d815 |
rev | line source |
---|---|
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1 /* Getopt for GNU. |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
2 NOTE: getopt is now part of the C library, so if you don't know what |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
3 "Keep this file name-space clean" means, talk to drepper@gnu.org |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
4 before changing it! |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
5 Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002 |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
6 Free Software Foundation, Inc. |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
7 This file is part of the GNU C Library. |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
8 |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
9 This program is free software; you can redistribute it and/or modify |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
10 it under the terms of the GNU General Public License as published by |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
11 the Free Software Foundation; either version 2, or (at your option) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
12 any later version. |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
13 |
19875
278944a16af3
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
19874
diff
changeset
|
14 This program is distributed in the hope that it will be useful, |
278944a16af3
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
19874
diff
changeset
|
15 but WITHOUT ANY WARRANTY; without even the implied warranty of |
278944a16af3
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
19874
diff
changeset
|
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
278944a16af3
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
19874
diff
changeset
|
17 GNU General Public License for more details. |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
18 |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
19 You should have received a copy of the GNU General Public License along |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
20 with this program; if not, write to the Free Software Foundation, |
26083
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
25980
diff
changeset
|
21 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
22 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
23 /* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
24 Ditto for AIX 3.2 and <stdlib.h>. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
25 #ifndef _NO_PROTO |
21793
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
26 # define _NO_PROTO |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
27 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
28 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
29 #ifdef HAVE_CONFIG_H |
21793
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
30 # include <config.h> |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
31 #endif |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
32 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
33 #if !defined __STDC__ || !__STDC__ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
34 /* This is a separate conditional since some stdc systems |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
35 reject `defined (const)'. */ |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
36 # ifndef const |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
37 # define const |
21793
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
38 # endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
39 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
40 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
41 #include <stdio.h> |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
42 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
43 /* Comment out all this code if we are using the GNU C Library, and are not |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
44 actually compiling the library itself. This code is part of the GNU C |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
45 Library, but also included in many other GNU distributions. Compiling |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
46 and linking in this code is a waste when using the GNU C library |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
47 (especially if it is a shared library). Rather than having every GNU |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
48 program understand `configure --with-gnu-libc' and omit the object files, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
49 it is simpler to just do this in the source for each such file. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
50 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
51 #define GETOPT_INTERFACE_VERSION 2 |
21501
c8c409640bf3
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20390
diff
changeset
|
52 #if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 |
21793
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
53 # include <gnu-versions.h> |
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
54 # if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION |
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
55 # define ELIDE_CODE |
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
56 # endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
57 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
58 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
59 #ifndef ELIDE_CODE |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
60 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
61 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
62 /* This needs to come after some library #include |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
63 to get __GNU_LIBRARY__ defined. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
64 #ifdef __GNU_LIBRARY__ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
65 /* Don't include stdlib.h for non-GNU C libraries because some of them |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
66 contain conflicting prototypes for getopt. */ |
21793
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
67 # include <stdlib.h> |
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
68 # include <unistd.h> |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
69 #endif /* GNU C library. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
70 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
71 #ifdef VMS |
21793
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
72 # include <unixlib.h> |
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
73 # if HAVE_STRING_H - 0 |
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
74 # include <string.h> |
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
75 # endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
76 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
77 |
48757
edfd05d8ef77
Do include libintl.h if HAVE_LIBINTL_H.
Richard M. Stallman <rms@gnu.org>
parents:
48699
diff
changeset
|
78 #if HAVE_LIBINTL_H |
edfd05d8ef77
Do include libintl.h if HAVE_LIBINTL_H.
Richard M. Stallman <rms@gnu.org>
parents:
48699
diff
changeset
|
79 # include <libintl.h> |
edfd05d8ef77
Do include libintl.h if HAVE_LIBINTL_H.
Richard M. Stallman <rms@gnu.org>
parents:
48699
diff
changeset
|
80 #endif /* HAVE_LIBINTL_H */ |
edfd05d8ef77
Do include libintl.h if HAVE_LIBINTL_H.
Richard M. Stallman <rms@gnu.org>
parents:
48699
diff
changeset
|
81 |
48673
1bcc16abed79
Comment out include of libintl.h or gettext.h.
Richard M. Stallman <rms@gnu.org>
parents:
48647
diff
changeset
|
82 #if 0 |
48699
c912a632b4a2
Fixed the build error in getopt.c that occured on systems lacking a gettext implementation. Thanks go to Andrew Choi [akochoi@shaw.ca] for this one.
Ben Key <bkey1@tampabay.rr.com>
parents:
48673
diff
changeset
|
83 # ifdef _LIBC |
c912a632b4a2
Fixed the build error in getopt.c that occured on systems lacking a gettext implementation. Thanks go to Andrew Choi [akochoi@shaw.ca] for this one.
Ben Key <bkey1@tampabay.rr.com>
parents:
48673
diff
changeset
|
84 # include <libintl.h> |
c912a632b4a2
Fixed the build error in getopt.c that occured on systems lacking a gettext implementation. Thanks go to Andrew Choi [akochoi@shaw.ca] for this one.
Ben Key <bkey1@tampabay.rr.com>
parents:
48673
diff
changeset
|
85 # else /* not #ifdef _LIBC */ |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
86 /* This is for other GNU distributions with internationalized messages. */ |
48699
c912a632b4a2
Fixed the build error in getopt.c that occured on systems lacking a gettext implementation. Thanks go to Andrew Choi [akochoi@shaw.ca] for this one.
Ben Key <bkey1@tampabay.rr.com>
parents:
48673
diff
changeset
|
87 # include "gettext.h" |
c912a632b4a2
Fixed the build error in getopt.c that occured on systems lacking a gettext implementation. Thanks go to Andrew Choi [akochoi@shaw.ca] for this one.
Ben Key <bkey1@tampabay.rr.com>
parents:
48673
diff
changeset
|
88 # endif /* end #ifdef _LIBC */ |
c912a632b4a2
Fixed the build error in getopt.c that occured on systems lacking a gettext implementation. Thanks go to Andrew Choi [akochoi@shaw.ca] for this one.
Ben Key <bkey1@tampabay.rr.com>
parents:
48673
diff
changeset
|
89 #endif /* end #if 0 */ |
c912a632b4a2
Fixed the build error in getopt.c that occured on systems lacking a gettext implementation. Thanks go to Andrew Choi [akochoi@shaw.ca] for this one.
Ben Key <bkey1@tampabay.rr.com>
parents:
48673
diff
changeset
|
90 |
48757
edfd05d8ef77
Do include libintl.h if HAVE_LIBINTL_H.
Richard M. Stallman <rms@gnu.org>
parents:
48699
diff
changeset
|
91 #if HAVE_LIBINTL_H |
48699
c912a632b4a2
Fixed the build error in getopt.c that occured on systems lacking a gettext implementation. Thanks go to Andrew Choi [akochoi@shaw.ca] for this one.
Ben Key <bkey1@tampabay.rr.com>
parents:
48673
diff
changeset
|
92 /* Should I include libintl.h here as in regex.c ? */ |
c912a632b4a2
Fixed the build error in getopt.c that occured on systems lacking a gettext implementation. Thanks go to Andrew Choi [akochoi@shaw.ca] for this one.
Ben Key <bkey1@tampabay.rr.com>
parents:
48673
diff
changeset
|
93 # define _(msgid) gettext (msgid) |
48757
edfd05d8ef77
Do include libintl.h if HAVE_LIBINTL_H.
Richard M. Stallman <rms@gnu.org>
parents:
48699
diff
changeset
|
94 #else /* not #if HAVE_LIBINTL_H */ |
48699
c912a632b4a2
Fixed the build error in getopt.c that occured on systems lacking a gettext implementation. Thanks go to Andrew Choi [akochoi@shaw.ca] for this one.
Ben Key <bkey1@tampabay.rr.com>
parents:
48673
diff
changeset
|
95 # define _(msgid) (msgid) |
48757
edfd05d8ef77
Do include libintl.h if HAVE_LIBINTL_H.
Richard M. Stallman <rms@gnu.org>
parents:
48699
diff
changeset
|
96 #endif /* end #if HAVE_LIBINTL_H */ |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
97 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
98 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
99 # include <wchar.h> |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
100 #endif |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
101 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
102 #ifndef attribute_hidden |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
103 # define attribute_hidden |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
104 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
105 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
106 /* This version of `getopt' appears to the caller like standard Unix `getopt' |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
107 but it behaves differently for the user, since it allows the user |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
108 to intersperse the options with the other arguments. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
109 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
110 As `getopt' works, it permutes the elements of ARGV so that, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
111 when it is done, all the options precede everything else. Thus |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
112 all application programs are extended to handle flexible argument order. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
113 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
114 Setting the environment variable POSIXLY_CORRECT disables permutation. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
115 Then the behavior is completely standard. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
116 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
117 GNU application programs can use a third alternative mode in which |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
118 they can distinguish the relative order of options and other arguments. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
119 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
120 #include "getopt.h" |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
121 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
122 /* For communication from `getopt' to the caller. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
123 When `getopt' finds an option that takes an argument, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
124 the argument value is returned here. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
125 Also, when `ordering' is RETURN_IN_ORDER, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
126 each non-option ARGV-element is returned here. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
127 |
26083
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
25980
diff
changeset
|
128 char *optarg; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
129 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
130 /* Index in ARGV of the next element to be scanned. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
131 This is used for communication to and from the caller |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
132 and for communication between successive calls to `getopt'. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
133 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
134 On entry to `getopt', zero means this is the first call; initialize. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
135 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
136 When `getopt' returns -1, this is the index of the first of the |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
137 non-option elements that the caller should itself scan. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
138 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
139 Otherwise, `optind' communicates from one call to the next |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
140 how much of ARGV has been scanned so far. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
141 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
142 /* 1003.2 says this must be 1 before any call. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
143 int optind = 1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
144 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
145 /* Formerly, initialization of getopt depended on optind==0, which |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
146 causes problems with re-calling getopt as programs generally don't |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
147 know that. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
148 |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
149 int __getopt_initialized attribute_hidden; |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
150 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
151 /* The next char to be scanned in the option-element |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
152 in which the last option character we returned was found. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
153 This allows us to pick up the scan where we left off. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
154 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
155 If this is zero, or a null string, it means resume the scan |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
156 by advancing to the next ARGV-element. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
157 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
158 static char *nextchar; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
159 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
160 /* Callers store zero here to inhibit the error message |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
161 for unrecognized options. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
162 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
163 int opterr = 1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
164 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
165 /* Set to an option character which was unrecognized. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
166 This must be initialized on some systems to avoid linking in the |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
167 system's own getopt implementation. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
168 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
169 int optopt = '?'; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
170 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
171 /* Describe how to deal with options that follow non-option ARGV-elements. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
172 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
173 If the caller did not specify anything, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
174 the default is REQUIRE_ORDER if the environment variable |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
175 POSIXLY_CORRECT is defined, PERMUTE otherwise. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
176 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
177 REQUIRE_ORDER means don't recognize them as options; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
178 stop option processing when the first non-option is seen. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
179 This is what Unix does. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
180 This mode of operation is selected by either setting the environment |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
181 variable POSIXLY_CORRECT, or using `+' as the first character |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
182 of the list of option characters. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
183 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
184 PERMUTE is the default. We permute the contents of ARGV as we scan, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
185 so that eventually all the non-options are at the end. This allows options |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
186 to be given in any order, even with programs that were not written to |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
187 expect this. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
188 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
189 RETURN_IN_ORDER is an option available to programs that were written |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
190 to expect options and other ARGV-elements in any order and that care about |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
191 the ordering of the two. We describe each non-option ARGV-element |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
192 as if it were the argument of an option with character code 1. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
193 Using `-' as the first character of the list of option characters |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
194 selects this mode of operation. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
195 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
196 The special argument `--' forces an end of option-scanning regardless |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
197 of the value of `ordering'. In the case of RETURN_IN_ORDER, only |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
198 `--' can cause `getopt' to return -1 with `optind' != ARGC. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
199 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
200 static enum |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
201 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
202 REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
203 } ordering; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
204 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
205 /* Value of POSIXLY_CORRECT environment variable. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
206 static char *posixly_correct; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
207 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
208 #ifdef __GNU_LIBRARY__ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
209 /* We want to avoid inclusion of string.h with non-GNU libraries |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
210 because there are many ways it can cause trouble. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
211 On some systems, it contains special magic macros that don't work |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
212 in GCC. */ |
21793
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
213 # include <string.h> |
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
214 # define my_index strchr |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
215 #else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
216 |
22146
84e894dcafbb
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21794
diff
changeset
|
217 # if HAVE_STRING_H |
84e894dcafbb
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21794
diff
changeset
|
218 # include <string.h> |
84e894dcafbb
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21794
diff
changeset
|
219 # else |
84e894dcafbb
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21794
diff
changeset
|
220 # include <strings.h> |
84e894dcafbb
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21794
diff
changeset
|
221 # endif |
84e894dcafbb
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21794
diff
changeset
|
222 |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
223 /* Avoid depending on library functions or files |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
224 whose names are inconsistent. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
225 |
21793
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
226 #ifndef getenv |
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
227 extern char *getenv (); |
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
228 #endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
229 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
230 static char * |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
231 my_index (str, chr) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
232 const char *str; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
233 int chr; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
234 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
235 while (*str) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
236 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
237 if (*str == chr) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
238 return (char *) str; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
239 str++; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
240 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
241 return 0; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
242 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
243 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
244 /* If using GCC, we can safely declare strlen this way. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
245 If not using GCC, it is ok not to declare it. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
246 #ifdef __GNUC__ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
247 /* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
248 That was relevant to code that was here before. */ |
21793
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
249 # if (!defined __STDC__ || !__STDC__) && !defined strlen |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
250 /* gcc with -traditional declares the built-in strlen to return int, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
251 and has done so at least since version 2.4.5. -- rms. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
252 extern int strlen (const char *); |
21793
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
253 # endif /* not __STDC__ */ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
254 #endif /* __GNUC__ */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
255 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
256 #endif /* not __GNU_LIBRARY__ */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
257 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
258 /* Handle permutation of arguments. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
259 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
260 /* Describe the part of ARGV that contains non-options that have |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
261 been skipped. `first_nonopt' is the index in ARGV of the first of them; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
262 `last_nonopt' is the index after the last of them. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
263 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
264 static int first_nonopt; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
265 static int last_nonopt; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
266 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
267 #ifdef _LIBC |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
268 /* Stored original parameters. |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
269 XXX This is no good solution. We should rather copy the args so |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
270 that we can compare them later. But we must not use malloc(3). */ |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
271 extern int __libc_argc; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
272 extern char **__libc_argv; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
273 |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
274 /* Bash 2.0 gives us an environment variable containing flags |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
275 indicating ARGV elements that should not be considered arguments. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
276 |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
277 # ifdef USE_NONOPTION_FLAGS |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
278 /* Defined in getopt_init.c */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
279 extern char *__getopt_nonoption_flags; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
280 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
281 static int nonoption_flags_max_len; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
282 static int nonoption_flags_len; |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
283 # endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
284 |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
285 # ifdef USE_NONOPTION_FLAGS |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
286 # define SWAP_FLAGS(ch1, ch2) \ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
287 if (nonoption_flags_len > 0) \ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
288 { \ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
289 char __tmp = __getopt_nonoption_flags[ch1]; \ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
290 __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
291 __getopt_nonoption_flags[ch2] = __tmp; \ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
292 } |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
293 # else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
294 # define SWAP_FLAGS(ch1, ch2) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
295 # endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
296 #else /* !_LIBC */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
297 # define SWAP_FLAGS(ch1, ch2) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
298 #endif /* _LIBC */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
299 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
300 /* Exchange two adjacent subsequences of ARGV. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
301 One subsequence is elements [first_nonopt,last_nonopt) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
302 which contains all the non-options that have been skipped so far. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
303 The other is elements [last_nonopt,optind), which contains all |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
304 the options processed since those non-options were skipped. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
305 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
306 `first_nonopt' and `last_nonopt' are relocated so that they describe |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
307 the new indices of the non-options in ARGV after they are moved. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
308 |
21501
c8c409640bf3
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20390
diff
changeset
|
309 #if defined __STDC__ && __STDC__ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
310 static void exchange (char **); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
311 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
312 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
313 static void |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
314 exchange (argv) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
315 char **argv; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
316 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
317 int bottom = first_nonopt; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
318 int middle = last_nonopt; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
319 int top = optind; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
320 char *tem; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
321 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
322 /* Exchange the shorter segment with the far end of the longer segment. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
323 That puts the shorter segment into the right place. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
324 It leaves the longer segment in the right place overall, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
325 but it consists of two parts that need to be swapped next. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
326 |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
327 #if defined _LIBC && defined USE_NONOPTION_FLAGS |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
328 /* First make sure the handling of the `__getopt_nonoption_flags' |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
329 string can work normally. Our top argument must be in the range |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
330 of the string. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
331 if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
332 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
333 /* We must extend the array. The user plays games with us and |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
334 presents new arguments. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
335 char *new_str = malloc (top + 1); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
336 if (new_str == NULL) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
337 nonoption_flags_len = nonoption_flags_max_len = 0; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
338 else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
339 { |
20212
90f407354bdf
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
19875
diff
changeset
|
340 memset (__mempcpy (new_str, __getopt_nonoption_flags, |
90f407354bdf
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
19875
diff
changeset
|
341 nonoption_flags_max_len), |
90f407354bdf
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
19875
diff
changeset
|
342 '\0', top + 1 - nonoption_flags_max_len); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
343 nonoption_flags_max_len = top + 1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
344 __getopt_nonoption_flags = new_str; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
345 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
346 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
347 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
348 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
349 while (top > middle && middle > bottom) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
350 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
351 if (top - middle > middle - bottom) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
352 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
353 /* Bottom segment is the short one. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
354 int len = middle - bottom; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
355 register int i; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
356 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
357 /* Swap it with the top part of the top segment. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
358 for (i = 0; i < len; i++) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
359 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
360 tem = argv[bottom + i]; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
361 argv[bottom + i] = argv[top - (middle - bottom) + i]; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
362 argv[top - (middle - bottom) + i] = tem; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
363 SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
364 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
365 /* Exclude the moved bottom segment from further swapping. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
366 top -= len; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
367 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
368 else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
369 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
370 /* Top segment is the short one. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
371 int len = top - middle; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
372 register int i; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
373 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
374 /* Swap it with the bottom part of the bottom segment. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
375 for (i = 0; i < len; i++) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
376 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
377 tem = argv[bottom + i]; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
378 argv[bottom + i] = argv[middle + i]; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
379 argv[middle + i] = tem; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
380 SWAP_FLAGS (bottom + i, middle + i); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
381 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
382 /* Exclude the moved top segment from further swapping. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
383 bottom += len; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
384 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
385 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
386 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
387 /* Update records for the slots the non-options now occupy. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
388 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
389 first_nonopt += (optind - last_nonopt); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
390 last_nonopt = optind; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
391 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
392 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
393 /* Initialize the internal data when the first call is made. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
394 |
21501
c8c409640bf3
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
20390
diff
changeset
|
395 #if defined __STDC__ && __STDC__ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
396 static const char *_getopt_initialize (int, char *const *, const char *); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
397 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
398 static const char * |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
399 _getopt_initialize (argc, argv, optstring) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
400 int argc; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
401 char *const *argv; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
402 const char *optstring; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
403 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
404 /* Start processing options with ARGV-element 1 (since ARGV-element 0 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
405 is the program name); the sequence of previously skipped |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
406 non-option ARGV-elements is empty. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
407 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
408 first_nonopt = last_nonopt = optind; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
409 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
410 nextchar = NULL; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
411 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
412 posixly_correct = getenv ("POSIXLY_CORRECT"); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
413 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
414 /* Determine how to handle the ordering of options and nonoptions. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
415 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
416 if (optstring[0] == '-') |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
417 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
418 ordering = RETURN_IN_ORDER; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
419 ++optstring; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
420 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
421 else if (optstring[0] == '+') |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
422 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
423 ordering = REQUIRE_ORDER; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
424 ++optstring; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
425 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
426 else if (posixly_correct != NULL) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
427 ordering = REQUIRE_ORDER; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
428 else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
429 ordering = PERMUTE; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
430 |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
431 #if defined _LIBC && defined USE_NONOPTION_FLAGS |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
432 if (posixly_correct == NULL |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
433 && argc == __libc_argc && argv == __libc_argv) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
434 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
435 if (nonoption_flags_max_len == 0) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
436 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
437 if (__getopt_nonoption_flags == NULL |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
438 || __getopt_nonoption_flags[0] == '\0') |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
439 nonoption_flags_max_len = -1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
440 else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
441 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
442 const char *orig_str = __getopt_nonoption_flags; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
443 int len = nonoption_flags_max_len = strlen (orig_str); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
444 if (nonoption_flags_max_len < argc) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
445 nonoption_flags_max_len = argc; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
446 __getopt_nonoption_flags = |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
447 (char *) malloc (nonoption_flags_max_len); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
448 if (__getopt_nonoption_flags == NULL) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
449 nonoption_flags_max_len = -1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
450 else |
20212
90f407354bdf
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
19875
diff
changeset
|
451 memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), |
90f407354bdf
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
19875
diff
changeset
|
452 '\0', nonoption_flags_max_len - len); |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
453 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
454 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
455 nonoption_flags_len = nonoption_flags_max_len; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
456 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
457 else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
458 nonoption_flags_len = 0; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
459 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
460 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
461 return optstring; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
462 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
463 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
464 /* Scan elements of ARGV (whose length is ARGC) for option characters |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
465 given in OPTSTRING. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
466 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
467 If an element of ARGV starts with '-', and is not exactly "-" or "--", |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
468 then it is an option element. The characters of this element |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
469 (aside from the initial '-') are option characters. If `getopt' |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
470 is called repeatedly, it returns successively each of the option characters |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
471 from each of the option elements. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
472 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
473 If `getopt' finds another option character, it returns that character, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
474 updating `optind' and `nextchar' so that the next call to `getopt' can |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
475 resume the scan with the following option character or ARGV-element. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
476 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
477 If there are no more option characters, `getopt' returns -1. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
478 Then `optind' is the index in ARGV of the first ARGV-element |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
479 that is not an option. (The ARGV-elements have been permuted |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
480 so that those that are not options now come last.) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
481 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
482 OPTSTRING is a string containing the legitimate option characters. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
483 If an option character is seen that is not listed in OPTSTRING, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
484 return '?' after printing an error message. If you set `opterr' to |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
485 zero, the error message is suppressed but we still return '?'. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
486 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
487 If a char in OPTSTRING is followed by a colon, that means it wants an arg, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
488 so the following text in the same ARGV-element, or the text of the following |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
489 ARGV-element, is returned in `optarg'. Two colons mean an option that |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
490 wants an optional arg; if there is text in the current ARGV-element, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
491 it is returned in `optarg', otherwise `optarg' is set to zero. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
492 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
493 If OPTSTRING starts with `-' or `+', it requests different methods of |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
494 handling the non-option ARGV-elements. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
495 See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
496 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
497 Long-named options begin with `--' instead of `-'. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
498 Their names may be abbreviated as long as the abbreviation is unique |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
499 or is an exact match for some defined option. If they have an |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
500 argument, it follows the option name in the same ARGV-element, separated |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
501 from the option name by a `=', or else the in next ARGV-element. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
502 When `getopt' finds a long-named option, it returns 0 if that option's |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
503 `flag' field is nonzero, the value of the option's `val' field |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
504 if the `flag' field is zero. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
505 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
506 The elements of ARGV aren't really const, because we permute them. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
507 But we pretend they're const in the prototype to be compatible |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
508 with other systems. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
509 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
510 LONGOPTS is a vector of `struct option' terminated by an |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
511 element containing a name which is zero. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
512 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
513 LONGIND returns the index in LONGOPT of the long-named option found. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
514 It is only valid when a long-named option has been found by the most |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
515 recent call. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
516 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
517 If LONG_ONLY is nonzero, '-' as well as '--' can introduce |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
518 long-named options. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
519 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
520 int |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
521 _getopt_internal (argc, argv, optstring, longopts, longind, long_only) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
522 int argc; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
523 char *const *argv; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
524 const char *optstring; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
525 const struct option *longopts; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
526 int *longind; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
527 int long_only; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
528 { |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
529 int print_errors = opterr; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
530 if (optstring[0] == ':') |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
531 print_errors = 0; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
532 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
533 if (argc < 1) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
534 return -1; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
535 |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
536 optarg = NULL; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
537 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
538 if (optind == 0 || !__getopt_initialized) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
539 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
540 if (optind == 0) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
541 optind = 1; /* Don't scan ARGV[0], the program name. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
542 optstring = _getopt_initialize (argc, argv, optstring); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
543 __getopt_initialized = 1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
544 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
545 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
546 /* Test whether ARGV[optind] points to a non-option argument. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
547 Either it does not have option syntax, or there is an environment flag |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
548 from the shell indicating it is not an option. The later information |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
549 is only used when the used in the GNU libc. */ |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
550 #if defined _LIBC && defined USE_NONOPTION_FLAGS |
21793
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
551 # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ |
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
552 || (optind < nonoption_flags_len \ |
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
553 && __getopt_nonoption_flags[optind] == '1')) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
554 #else |
21793
465a6898b727
automatically generated from GPLed version
Ulrich Drepper <drepper@redhat.com>
parents:
21501
diff
changeset
|
555 # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
556 #endif |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
557 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
558 if (nextchar == NULL || *nextchar == '\0') |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
559 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
560 /* Advance to the next ARGV-element. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
561 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
562 /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
563 moved back by the user (who may also have changed the arguments). */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
564 if (last_nonopt > optind) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
565 last_nonopt = optind; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
566 if (first_nonopt > optind) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
567 first_nonopt = optind; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
568 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
569 if (ordering == PERMUTE) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
570 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
571 /* If we have just processed some options following some non-options, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
572 exchange them so that the options come first. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
573 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
574 if (first_nonopt != last_nonopt && last_nonopt != optind) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
575 exchange ((char **) argv); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
576 else if (last_nonopt != optind) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
577 first_nonopt = optind; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
578 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
579 /* Skip any additional non-options |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
580 and extend the range of non-options previously skipped. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
581 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
582 while (optind < argc && NONOPTION_P) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
583 optind++; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
584 last_nonopt = optind; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
585 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
586 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
587 /* The special ARGV-element `--' means premature end of options. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
588 Skip it like a null option, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
589 then exchange with previous non-options as if it were an option, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
590 then skip everything else like a non-option. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
591 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
592 if (optind != argc && !strcmp (argv[optind], "--")) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
593 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
594 optind++; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
595 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
596 if (first_nonopt != last_nonopt && last_nonopt != optind) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
597 exchange ((char **) argv); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
598 else if (first_nonopt == last_nonopt) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
599 first_nonopt = optind; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
600 last_nonopt = argc; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
601 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
602 optind = argc; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
603 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
604 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
605 /* If we have done all the ARGV-elements, stop the scan |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
606 and back over any non-options that we skipped and permuted. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
607 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
608 if (optind == argc) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
609 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
610 /* Set the next-arg-index to point at the non-options |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
611 that we previously skipped, so the caller will digest them. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
612 if (first_nonopt != last_nonopt) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
613 optind = first_nonopt; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
614 return -1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
615 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
616 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
617 /* If we have come to a non-option and did not permute it, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
618 either stop the scan or describe it to the caller and pass it by. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
619 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
620 if (NONOPTION_P) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
621 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
622 if (ordering == REQUIRE_ORDER) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
623 return -1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
624 optarg = argv[optind++]; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
625 return 1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
626 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
627 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
628 /* We have found another option-ARGV-element. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
629 Skip the initial punctuation. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
630 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
631 nextchar = (argv[optind] + 1 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
632 + (longopts != NULL && argv[optind][1] == '-')); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
633 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
634 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
635 /* Decode the current option-ARGV-element. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
636 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
637 /* Check whether the ARGV-element is a long option. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
638 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
639 If long_only and the ARGV-element has the form "-f", where f is |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
640 a valid short option, don't consider it an abbreviated form of |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
641 a long option that starts with f. Otherwise there would be no |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
642 way to give the -f short option. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
643 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
644 On the other hand, if there's a long option "fubar" and |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
645 the ARGV-element is "-fu", do consider that an abbreviation of |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
646 the long option, just like "--fu", and not "-f" with arg "u". |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
647 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
648 This distinction seems to be the most useful approach. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
649 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
650 if (longopts != NULL |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
651 && (argv[optind][1] == '-' |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
652 || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
653 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
654 char *nameend; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
655 const struct option *p; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
656 const struct option *pfound = NULL; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
657 int exact = 0; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
658 int ambig = 0; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
659 int indfound = -1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
660 int option_index; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
661 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
662 for (nameend = nextchar; *nameend && *nameend != '='; nameend++) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
663 /* Do nothing. */ ; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
664 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
665 /* Test all long options for either exact match |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
666 or abbreviated matches. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
667 for (p = longopts, option_index = 0; p->name; p++, option_index++) |
25980 | 668 if (!strncmp (p->name, nextchar, nameend - nextchar)) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
669 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
670 if ((unsigned int) (nameend - nextchar) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
671 == (unsigned int) strlen (p->name)) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
672 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
673 /* Exact match found. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
674 pfound = p; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
675 indfound = option_index; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
676 exact = 1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
677 break; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
678 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
679 else if (pfound == NULL) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
680 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
681 /* First nonexact match found. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
682 pfound = p; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
683 indfound = option_index; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
684 } |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
685 else if (long_only |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
686 || pfound->has_arg != p->has_arg |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
687 || pfound->flag != p->flag |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
688 || pfound->val != p->val) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
689 /* Second or later nonexact match found. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
690 ambig = 1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
691 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
692 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
693 if (ambig && !exact) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
694 { |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
695 if (print_errors) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
696 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
697 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
698 char *buf; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
699 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
700 if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
701 argv[0], argv[optind]) >= 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
702 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
703 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
704 if (_IO_fwide (stderr, 0) > 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
705 __fwprintf (stderr, L"%s", buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
706 else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
707 fputs (buf, stderr); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
708 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
709 free (buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
710 } |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
711 #else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
712 fprintf (stderr, _("%s: option `%s' is ambiguous\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
713 argv[0], argv[optind]); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
714 #endif |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
715 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
716 nextchar += strlen (nextchar); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
717 optind++; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
718 optopt = 0; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
719 return '?'; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
720 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
721 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
722 if (pfound != NULL) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
723 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
724 option_index = indfound; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
725 optind++; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
726 if (*nameend) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
727 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
728 /* Don't test has_arg with >, because some C compilers don't |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
729 allow it to be used on enums. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
730 if (pfound->has_arg) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
731 optarg = nameend + 1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
732 else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
733 { |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
734 if (print_errors) |
26083
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
25980
diff
changeset
|
735 { |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
736 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
737 char *buf; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
738 int n; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
739 #endif |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
740 |
26083
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
25980
diff
changeset
|
741 if (argv[optind - 1][1] == '-') |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
742 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
743 /* --option */ |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
744 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
745 n = __asprintf (&buf, _("\ |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
746 %s: option `--%s' doesn't allow an argument\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
747 argv[0], pfound->name); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
748 #else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
749 fprintf (stderr, _("\ |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
750 %s: option `--%s' doesn't allow an argument\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
751 argv[0], pfound->name); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
752 #endif |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
753 } |
26083
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
25980
diff
changeset
|
754 else |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
755 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
756 /* +option or -option */ |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
757 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
758 n = __asprintf (&buf, _("\ |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
759 %s: option `%c%s' doesn't allow an argument\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
760 argv[0], argv[optind - 1][0], |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
761 pfound->name); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
762 #else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
763 fprintf (stderr, _("\ |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
764 %s: option `%c%s' doesn't allow an argument\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
765 argv[0], argv[optind - 1][0], pfound->name); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
766 #endif |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
767 } |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
768 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
769 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
770 if (n >= 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
771 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
772 if (_IO_fwide (stderr, 0) > 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
773 __fwprintf (stderr, L"%s", buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
774 else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
775 fputs (buf, stderr); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
776 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
777 free (buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
778 } |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
779 #endif |
26083
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
25980
diff
changeset
|
780 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
781 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
782 nextchar += strlen (nextchar); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
783 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
784 optopt = pfound->val; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
785 return '?'; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
786 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
787 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
788 else if (pfound->has_arg == 1) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
789 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
790 if (optind < argc) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
791 optarg = argv[optind++]; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
792 else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
793 { |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
794 if (print_errors) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
795 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
796 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
797 char *buf; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
798 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
799 if (__asprintf (&buf, _("\ |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
800 %s: option `%s' requires an argument\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
801 argv[0], argv[optind - 1]) >= 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
802 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
803 if (_IO_fwide (stderr, 0) > 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
804 __fwprintf (stderr, L"%s", buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
805 else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
806 fputs (buf, stderr); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
807 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
808 free (buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
809 } |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
810 #else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
811 fprintf (stderr, |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
812 _("%s: option `%s' requires an argument\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
813 argv[0], argv[optind - 1]); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
814 #endif |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
815 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
816 nextchar += strlen (nextchar); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
817 optopt = pfound->val; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
818 return optstring[0] == ':' ? ':' : '?'; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
819 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
820 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
821 nextchar += strlen (nextchar); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
822 if (longind != NULL) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
823 *longind = option_index; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
824 if (pfound->flag) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
825 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
826 *(pfound->flag) = pfound->val; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
827 return 0; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
828 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
829 return pfound->val; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
830 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
831 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
832 /* Can't find it as a long option. If this is not getopt_long_only, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
833 or the option starts with '--' or is not a valid short |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
834 option, then it's an error. |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
835 Otherwise interpret it as a short option. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
836 if (!long_only || argv[optind][1] == '-' |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
837 || my_index (optstring, *nextchar) == NULL) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
838 { |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
839 if (print_errors) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
840 { |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
841 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
842 char *buf; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
843 int n; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
844 #endif |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
845 |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
846 if (argv[optind][1] == '-') |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
847 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
848 /* --option */ |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
849 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
850 n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
851 argv[0], nextchar); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
852 #else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
853 fprintf (stderr, _("%s: unrecognized option `--%s'\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
854 argv[0], nextchar); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
855 #endif |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
856 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
857 else |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
858 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
859 /* +option or -option */ |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
860 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
861 n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
862 argv[0], argv[optind][0], nextchar); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
863 #else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
864 fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
865 argv[0], argv[optind][0], nextchar); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
866 #endif |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
867 } |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
868 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
869 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
870 if (n >= 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
871 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
872 if (_IO_fwide (stderr, 0) > 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
873 __fwprintf (stderr, L"%s", buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
874 else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
875 fputs (buf, stderr); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
876 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
877 free (buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
878 } |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
879 #endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
880 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
881 nextchar = (char *) ""; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
882 optind++; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
883 optopt = 0; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
884 return '?'; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
885 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
886 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
887 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
888 /* Look at and handle the next short option-character. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
889 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
890 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
891 char c = *nextchar++; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
892 char *temp = my_index (optstring, c); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
893 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
894 /* Increment `optind' when we start to process its last character. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
895 if (*nextchar == '\0') |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
896 ++optind; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
897 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
898 if (temp == NULL || c == ':') |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
899 { |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
900 if (print_errors) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
901 { |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
902 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
903 char *buf; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
904 int n; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
905 #endif |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
906 |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
907 if (posixly_correct) |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
908 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
909 /* 1003.2 specifies the format of this message. */ |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
910 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
911 n = __asprintf (&buf, _("%s: illegal option -- %c\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
912 argv[0], c); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
913 #else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
914 fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
915 #endif |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
916 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
917 else |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
918 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
919 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
920 n = __asprintf (&buf, _("%s: invalid option -- %c\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
921 argv[0], c); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
922 #else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
923 fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
924 #endif |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
925 } |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
926 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
927 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
928 if (n >= 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
929 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
930 if (_IO_fwide (stderr, 0) > 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
931 __fwprintf (stderr, L"%s", buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
932 else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
933 fputs (buf, stderr); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
934 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
935 free (buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
936 } |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
937 #endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
938 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
939 optopt = c; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
940 return '?'; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
941 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
942 /* Convenience. Treat POSIX -W foo same as long option --foo */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
943 if (temp[0] == 'W' && temp[1] == ';') |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
944 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
945 char *nameend; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
946 const struct option *p; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
947 const struct option *pfound = NULL; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
948 int exact = 0; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
949 int ambig = 0; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
950 int indfound = 0; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
951 int option_index; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
952 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
953 /* This is an option that requires an argument. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
954 if (*nextchar != '\0') |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
955 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
956 optarg = nextchar; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
957 /* If we end this ARGV-element by taking the rest as an arg, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
958 we must advance to the next element now. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
959 optind++; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
960 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
961 else if (optind == argc) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
962 { |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
963 if (print_errors) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
964 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
965 /* 1003.2 specifies the format of this message. */ |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
966 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
967 char *buf; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
968 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
969 if (__asprintf (&buf, |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
970 _("%s: option requires an argument -- %c\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
971 argv[0], c) >= 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
972 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
973 if (_IO_fwide (stderr, 0) > 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
974 __fwprintf (stderr, L"%s", buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
975 else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
976 fputs (buf, stderr); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
977 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
978 free (buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
979 } |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
980 #else |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
981 fprintf (stderr, _("%s: option requires an argument -- %c\n"), |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
982 argv[0], c); |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
983 #endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
984 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
985 optopt = c; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
986 if (optstring[0] == ':') |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
987 c = ':'; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
988 else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
989 c = '?'; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
990 return c; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
991 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
992 else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
993 /* We already incremented `optind' once; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
994 increment it again when taking next ARGV-elt as argument. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
995 optarg = argv[optind++]; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
996 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
997 /* optarg is now the argument, see if it's in the |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
998 table of longopts. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
999 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1000 for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1001 /* Do nothing. */ ; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1002 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1003 /* Test all long options for either exact match |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1004 or abbreviated matches. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1005 for (p = longopts, option_index = 0; p->name; p++, option_index++) |
25980 | 1006 if (!strncmp (p->name, nextchar, nameend - nextchar)) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1007 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1008 if ((unsigned int) (nameend - nextchar) == strlen (p->name)) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1009 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1010 /* Exact match found. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1011 pfound = p; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1012 indfound = option_index; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1013 exact = 1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1014 break; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1015 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1016 else if (pfound == NULL) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1017 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1018 /* First nonexact match found. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1019 pfound = p; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1020 indfound = option_index; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1021 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1022 else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1023 /* Second or later nonexact match found. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1024 ambig = 1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1025 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1026 if (ambig && !exact) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1027 { |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1028 if (print_errors) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1029 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1030 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1031 char *buf; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1032 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1033 if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1034 argv[0], argv[optind]) >= 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1035 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1036 if (_IO_fwide (stderr, 0) > 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1037 __fwprintf (stderr, L"%s", buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1038 else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1039 fputs (buf, stderr); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1040 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1041 free (buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1042 } |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1043 #else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1044 fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1045 argv[0], argv[optind]); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1046 #endif |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1047 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1048 nextchar += strlen (nextchar); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1049 optind++; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1050 return '?'; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1051 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1052 if (pfound != NULL) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1053 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1054 option_index = indfound; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1055 if (*nameend) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1056 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1057 /* Don't test has_arg with >, because some C compilers don't |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1058 allow it to be used on enums. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1059 if (pfound->has_arg) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1060 optarg = nameend + 1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1061 else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1062 { |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1063 if (print_errors) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1064 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1065 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1066 char *buf; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1067 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1068 if (__asprintf (&buf, _("\ |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1069 %s: option `-W %s' doesn't allow an argument\n"), |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1070 argv[0], pfound->name) >= 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1071 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1072 if (_IO_fwide (stderr, 0) > 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1073 __fwprintf (stderr, L"%s", buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1074 else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1075 fputs (buf, stderr); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1076 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1077 free (buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1078 } |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1079 #else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1080 fprintf (stderr, _("\ |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1081 %s: option `-W %s' doesn't allow an argument\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1082 argv[0], pfound->name); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1083 #endif |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1084 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1085 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1086 nextchar += strlen (nextchar); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1087 return '?'; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1088 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1089 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1090 else if (pfound->has_arg == 1) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1091 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1092 if (optind < argc) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1093 optarg = argv[optind++]; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1094 else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1095 { |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1096 if (print_errors) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1097 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1098 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1099 char *buf; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1100 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1101 if (__asprintf (&buf, _("\ |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1102 %s: option `%s' requires an argument\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1103 argv[0], argv[optind - 1]) >= 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1104 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1105 if (_IO_fwide (stderr, 0) > 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1106 __fwprintf (stderr, L"%s", buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1107 else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1108 fputs (buf, stderr); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1109 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1110 free (buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1111 } |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1112 #else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1113 fprintf (stderr, |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1114 _("%s: option `%s' requires an argument\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1115 argv[0], argv[optind - 1]); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1116 #endif |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1117 } |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1118 nextchar += strlen (nextchar); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1119 return optstring[0] == ':' ? ':' : '?'; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1120 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1121 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1122 nextchar += strlen (nextchar); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1123 if (longind != NULL) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1124 *longind = option_index; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1125 if (pfound->flag) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1126 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1127 *(pfound->flag) = pfound->val; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1128 return 0; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1129 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1130 return pfound->val; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1131 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1132 nextchar = NULL; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1133 return 'W'; /* Let the application handle it. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1134 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1135 if (temp[1] == ':') |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1136 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1137 if (temp[2] == ':') |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1138 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1139 /* This is an option that accepts an argument optionally. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1140 if (*nextchar != '\0') |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1141 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1142 optarg = nextchar; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1143 optind++; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1144 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1145 else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1146 optarg = NULL; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1147 nextchar = NULL; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1148 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1149 else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1150 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1151 /* This is an option that requires an argument. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1152 if (*nextchar != '\0') |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1153 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1154 optarg = nextchar; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1155 /* If we end this ARGV-element by taking the rest as an arg, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1156 we must advance to the next element now. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1157 optind++; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1158 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1159 else if (optind == argc) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1160 { |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1161 if (print_errors) |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1162 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1163 /* 1003.2 specifies the format of this message. */ |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1164 #if defined _LIBC && defined USE_IN_LIBIO |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1165 char *buf; |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1166 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1167 if (__asprintf (&buf, _("\ |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1168 %s: option requires an argument -- %c\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1169 argv[0], c) >= 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1170 { |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1171 if (_IO_fwide (stderr, 0) > 0) |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1172 __fwprintf (stderr, L"%s", buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1173 else |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1174 fputs (buf, stderr); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1175 |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1176 free (buf); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1177 } |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1178 #else |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1179 fprintf (stderr, |
48647
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1180 _("%s: option requires an argument -- %c\n"), |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1181 argv[0], c); |
47ec3831be14
(const): Move outside !HAVE_CONFIG_H conditional.
Richard M. Stallman <rms@gnu.org>
parents:
26083
diff
changeset
|
1182 #endif |
17502
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1183 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1184 optopt = c; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1185 if (optstring[0] == ':') |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1186 c = ':'; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1187 else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1188 c = '?'; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1189 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1190 else |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1191 /* We already incremented `optind' once; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1192 increment it again when taking next ARGV-elt as argument. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1193 optarg = argv[optind++]; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1194 nextchar = NULL; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1195 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1196 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1197 return c; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1198 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1199 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1200 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1201 int |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1202 getopt (argc, argv, optstring) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1203 int argc; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1204 char *const *argv; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1205 const char *optstring; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1206 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1207 return _getopt_internal (argc, argv, optstring, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1208 (const struct option *) 0, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1209 (int *) 0, |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1210 0); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1211 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1212 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1213 #endif /* Not ELIDE_CODE. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1214 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1215 #ifdef TEST |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1216 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1217 /* Compile with -DTEST to make an executable for use in testing |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1218 the above definition of `getopt'. */ |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1219 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1220 int |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1221 main (argc, argv) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1222 int argc; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1223 char **argv; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1224 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1225 int c; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1226 int digit_optind = 0; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1227 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1228 while (1) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1229 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1230 int this_option_optind = optind ? optind : 1; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1231 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1232 c = getopt (argc, argv, "abc:d:0123456789"); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1233 if (c == -1) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1234 break; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1235 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1236 switch (c) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1237 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1238 case '0': |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1239 case '1': |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1240 case '2': |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1241 case '3': |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1242 case '4': |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1243 case '5': |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1244 case '6': |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1245 case '7': |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1246 case '8': |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1247 case '9': |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1248 if (digit_optind != 0 && digit_optind != this_option_optind) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1249 printf ("digits occur in two different argv-elements.\n"); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1250 digit_optind = this_option_optind; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1251 printf ("option %c\n", c); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1252 break; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1253 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1254 case 'a': |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1255 printf ("option a\n"); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1256 break; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1257 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1258 case 'b': |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1259 printf ("option b\n"); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1260 break; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1261 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1262 case 'c': |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1263 printf ("option c with value `%s'\n", optarg); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1264 break; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1265 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1266 case '?': |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1267 break; |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1268 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1269 default: |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1270 printf ("?? getopt returned character code 0%o ??\n", c); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1271 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1272 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1273 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1274 if (optind < argc) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1275 { |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1276 printf ("non-option ARGV-elements: "); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1277 while (optind < argc) |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1278 printf ("%s ", argv[optind++]); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1279 printf ("\n"); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1280 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1281 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1282 exit (0); |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1283 } |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1284 |
8f3dcea869f5
automatically generated from GPLed version
Paul Eggert <eggert@twinsun.com>
parents:
diff
changeset
|
1285 #endif /* TEST */ |
52401 | 1286 |
1287 /* arch-tag: 0e6da124-7269-4785-a9de-094c263d20dc | |
1288 (do not change this comment) */ |