| 3 |
|
"Keep this file name-space clean" means, talk to drepper@gnu.org |
| 4 |
|
before changing it! |
| 5 |
|
Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001 |
| 6 |
< |
Free Software Foundation, Inc. |
| 6 |
> |
Free Software Foundation, Inc. |
| 7 |
|
This file is part of the GNU C Library. |
| 8 |
|
|
| 9 |
|
The GNU C Library is free software; you can redistribute it and/or |
| 155 |
|
|
| 156 |
|
/* Describe how to deal with options that follow non-option ARGV-elements. |
| 157 |
|
|
| 158 |
< |
If the caller did not specify anything, |
| 159 |
< |
the default is REQUIRE_ORDER if the environment variable |
| 160 |
< |
POSIXLY_CORRECT is defined, PERMUTE otherwise. |
| 158 |
> |
If the caller did not specify anything, |
| 159 |
> |
the default is REQUIRE_ORDER if the environment variable |
| 160 |
> |
POSIXLY_CORRECT is defined, PERMUTE otherwise. |
| 161 |
|
|
| 162 |
< |
REQUIRE_ORDER means don't recognize them as options; |
| 163 |
< |
stop option processing when the first non-option is seen. |
| 164 |
< |
This is what Unix does. |
| 165 |
< |
This mode of operation is selected by either setting the environment |
| 166 |
< |
variable POSIXLY_CORRECT, or using `+' as the first character |
| 167 |
< |
of the list of option characters. |
| 162 |
> |
REQUIRE_ORDER means don't recognize them as options; |
| 163 |
> |
stop option processing when the first non-option is seen. |
| 164 |
> |
This is what Unix does. |
| 165 |
> |
This mode of operation is selected by either setting the environment |
| 166 |
> |
variable POSIXLY_CORRECT, or using `+' as the first character |
| 167 |
> |
of the list of option characters. |
| 168 |
|
|
| 169 |
< |
PERMUTE is the default. We permute the contents of ARGV as we scan, |
| 170 |
< |
so that eventually all the non-options are at the end. This allows options |
| 171 |
< |
to be given in any order, even with programs that were not written to |
| 172 |
< |
expect this. |
| 169 |
> |
PERMUTE is the default. We permute the contents of ARGV as we scan, |
| 170 |
> |
so that eventually all the non-options are at the end. This allows options |
| 171 |
> |
to be given in any order, even with programs that were not written to |
| 172 |
> |
expect this. |
| 173 |
|
|
| 174 |
< |
RETURN_IN_ORDER is an option available to programs that were written |
| 175 |
< |
to expect options and other ARGV-elements in any order and that care about |
| 176 |
< |
the ordering of the two. We describe each non-option ARGV-element |
| 177 |
< |
as if it were the argument of an option with character code 1. |
| 178 |
< |
Using `-' as the first character of the list of option characters |
| 179 |
< |
selects this mode of operation. |
| 174 |
> |
RETURN_IN_ORDER is an option available to programs that were written |
| 175 |
> |
to expect options and other ARGV-elements in any order and that care about |
| 176 |
> |
the ordering of the two. We describe each non-option ARGV-element |
| 177 |
> |
as if it were the argument of an option with character code 1. |
| 178 |
> |
Using `-' as the first character of the list of option characters |
| 179 |
> |
selects this mode of operation. |
| 180 |
|
|
| 181 |
< |
The special argument `--' forces an end of option-scanning regardless |
| 182 |
< |
of the value of `ordering'. In the case of RETURN_IN_ORDER, only |
| 183 |
< |
`--' can cause `getopt' to return -1 with `optind' != ARGC. */ |
| 181 |
> |
The special argument `--' forces an end of option-scanning regardless |
| 182 |
> |
of the value of `ordering'. In the case of RETURN_IN_ORDER, only |
| 183 |
> |
`--' can cause `getopt' to return -1 with `optind' != ARGC. */ |
| 184 |
|
|
| 185 |
|
static enum |
| 186 |
< |
{ |
| 187 |
< |
REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER |
| 188 |
< |
} ordering; |
| 186 |
> |
{ |
| 187 |
> |
REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER |
| 188 |
> |
} ordering; |
| 189 |
|
|
| 190 |
|
/* Value of POSIXLY_CORRECT environment variable. */ |
| 191 |
|
static char *posixly_correct; |
| 268 |
|
# endif |
| 269 |
|
|
| 270 |
|
# ifdef USE_NONOPTION_FLAGS |
| 271 |
< |
# define SWAP_FLAGS(ch1, ch2) \ |
| 272 |
< |
if (nonoption_flags_len > 0) \ |
| 273 |
< |
{ \ |
| 274 |
< |
char __tmp = __getopt_nonoption_flags[ch1]; \ |
| 275 |
< |
__getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ |
| 276 |
< |
__getopt_nonoption_flags[ch2] = __tmp; \ |
| 271 |
> |
# define SWAP_FLAGS(ch1, ch2) \ |
| 272 |
> |
if (nonoption_flags_len > 0) \ |
| 273 |
> |
{ \ |
| 274 |
> |
char __tmp = __getopt_nonoption_flags[ch1]; \ |
| 275 |
> |
__getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ |
| 276 |
> |
__getopt_nonoption_flags[ch2] = __tmp; \ |
| 277 |
|
} |
| 278 |
|
# else |
| 279 |
|
# define SWAP_FLAGS(ch1, ch2) |
| 533 |
|
from the shell indicating it is not an option. The later information |
| 534 |
|
is only used when the used in the GNU libc. */ |
| 535 |
|
#if defined _LIBC && defined USE_NONOPTION_FLAGS |
| 536 |
< |
# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ |
| 537 |
< |
|| (optind < nonoption_flags_len \ |
| 536 |
> |
# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ |
| 537 |
> |
|| (optind < nonoption_flags_len \ |
| 538 |
|
&& __getopt_nonoption_flags[optind] == '1')) |
| 539 |
|
#else |
| 540 |
|
# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') |
| 621 |
|
|
| 622 |
|
/* Check whether the ARGV-element is a long option. |
| 623 |
|
|
| 624 |
< |
If long_only and the ARGV-element has the form "-f", where f is |
| 625 |
< |
a valid short option, don't consider it an abbreviated form of |
| 626 |
< |
a long option that starts with f. Otherwise there would be no |
| 627 |
< |
way to give the -f short option. |
| 624 |
> |
If long_only and the ARGV-element has the form "-f", where f is |
| 625 |
> |
a valid short option, don't consider it an abbreviated form of |
| 626 |
> |
a long option that starts with f. Otherwise there would be no |
| 627 |
> |
way to give the -f short option. |
| 628 |
|
|
| 629 |
< |
On the other hand, if there's a long option "fubar" and |
| 630 |
< |
the ARGV-element is "-fu", do consider that an abbreviation of |
| 631 |
< |
the long option, just like "--fu", and not "-f" with arg "u". |
| 629 |
> |
On the other hand, if there's a long option "fubar" and |
| 630 |
> |
the ARGV-element is "-fu", do consider that an abbreviation of |
| 631 |
> |
the long option, just like "--fu", and not "-f" with arg "u". |
| 632 |
|
|
| 633 |
< |
This distinction seems to be the most useful approach. */ |
| 633 |
> |
This distinction seems to be the most useful approach. */ |
| 634 |
|
|
| 635 |
|
if (longopts != NULL |
| 636 |
|
&& (argv[optind][1] == '-' |
| 726 |
|
{ |
| 727 |
|
if (print_errors) |
| 728 |
|
fprintf (stderr, |
| 729 |
< |
_("%s: option `%s' requires an argument\n"), |
| 730 |
< |
argv[0], argv[optind - 1]); |
| 729 |
> |
_("%s: option `%s' requires an argument\n"), |
| 730 |
> |
argv[0], argv[optind - 1]); |
| 731 |
|
nextchar += strlen (nextchar); |
| 732 |
|
optopt = pfound->val; |
| 733 |
|
return optstring[0] == ':' ? ':' : '?'; |
| 884 |
|
{ |
| 885 |
|
if (print_errors) |
| 886 |
|
fprintf (stderr, _("\ |
| 887 |
< |
%s: option `-W %s' doesn't allow an argument\n"), |
| 887 |
> |
%s: option `-W %s' doesn't allow an argument\n"), |
| 888 |
|
argv[0], pfound->name); |
| 889 |
|
|
| 890 |
|
nextchar += strlen (nextchar); |
| 915 |
|
} |
| 916 |
|
return pfound->val; |
| 917 |
|
} |
| 918 |
< |
nextchar = NULL; |
| 919 |
< |
return 'W'; /* Let the application handle it. */ |
| 918 |
> |
nextchar = NULL; |
| 919 |
> |
return 'W'; /* Let the application handle it. */ |
| 920 |
|
} |
| 921 |
|
if (temp[1] == ':') |
| 922 |
|
{ |