diff options
Diffstat (limited to 'src/util/getopt.c')
-rw-r--r-- | src/util/getopt.c | 110 |
1 files changed, 6 insertions, 104 deletions
diff --git a/src/util/getopt.c b/src/util/getopt.c index 572e534..64e4341 100644 --- a/src/util/getopt.c +++ b/src/util/getopt.c @@ -238,45 +238,7 @@ strlen (const char *); static int first_nonopt; static int last_nonopt; -#ifdef _LIBC -/* Bash 2.0 gives us an environment variable containing flags - indicating ARGV elements that should not be considered arguments. */ - -/* Defined in getopt_init.c */ -extern char *__getopt_nonoption_flags; - -static int nonoption_flags_max_len; -static int nonoption_flags_len; - -static int original_argc; -static char *const *original_argv; - -extern pid_t __libc_pid; - -/* Make sure the environment variable bash 2.0 puts in the environment - is valid for the getopt call we must make sure that the ARGV passed - to getopt is that one passed to the process. */ -static void GNUNET_UNUSED -store_args_and_env (int argc, char *const *argv) -{ - /* XXX This is no good solution. We should rather copy the args so - * that we can compare them later. But we must not use malloc(3). */ - original_argc = argc; - original_argv = argv; -} - -text_set_element (__libc_subinit, store_args_and_env); - -#define SWAP_FLAGS(ch1, ch2) \ - if (nonoption_flags_len > 0) \ - { \ - char __tmp = __getopt_nonoption_flags[ch1]; \ - __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ - __getopt_nonoption_flags[ch2] = __tmp; \ - } -#else /* !_LIBC */ #define SWAP_FLAGS(ch1, ch2) -#endif /* _LIBC */ /* Exchange two adjacent subsequences of ARGV. One subsequence is elements [first_nonopt,last_nonopt) @@ -305,29 +267,6 @@ exchange (char **argv) * It leaves the longer segment in the right place overall, * but it consists of two parts that need to be swapped next. */ -#ifdef _LIBC - /* First make sure the handling of the `__getopt_nonoption_flags' - * string can work normally. Our top argument must be in the range - * of the string. */ - if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) - { - /* We must extend the array. The user plays games with us and - * presents new arguments. */ - char *new_str = malloc (top + 1); - - if (new_str == NULL) - nonoption_flags_len = nonoption_flags_max_len = 0; - else - { - memcpy (new_str, __getopt_nonoption_flags, nonoption_flags_max_len); - memset (&new_str[nonoption_flags_max_len], '\0', - top + 1 - nonoption_flags_max_len); - nonoption_flags_max_len = top + 1; - __getopt_nonoption_flags = new_str; - } - } -#endif - while (top > middle && middle > bottom) { if (top - middle > middle - bottom) @@ -410,41 +349,9 @@ _getopt_initialize (int argc, else ordering = PERMUTE; -#ifdef _LIBC - if (posixly_correct == NULL && argc == original_argc && argv == original_argv) - { - if (nonoption_flags_max_len == 0) - { - if (__getopt_nonoption_flags == NULL || - __getopt_nonoption_flags[0] == '\0') - nonoption_flags_max_len = -1; - else - { - const char *orig_str = __getopt_nonoption_flags; - int len = nonoption_flags_max_len = strlen (orig_str); - - if (nonoption_flags_max_len < argc) - nonoption_flags_max_len = argc; - __getopt_nonoption_flags = (char *) malloc (nonoption_flags_max_len); - if (__getopt_nonoption_flags == NULL) - nonoption_flags_max_len = -1; - else - { - memcpy (__getopt_nonoption_flags, orig_str, len); - memset (&__getopt_nonoption_flags[len], '\0', - nonoption_flags_max_len - len); - } - } - } - nonoption_flags_len = nonoption_flags_max_len; - } - else - nonoption_flags_len = 0; -#endif - return optstring; } - + /* Scan elements of ARGV (whose length is ARGC) for option characters given in OPTSTRING. @@ -523,13 +430,7 @@ GN_getopt_internal (int argc, char *const *argv, const char *optstring, * Either it does not have option syntax, or there is an environment flag * from the shell indicating it is not an option. The later information * is only used when the used in the GNU libc. */ -#ifdef _LIBC -#define NONOPTION_P (argv[GNoptind][0] != '-' || argv[GNoptind][1] == '\0' \ - || (GNoptind < nonoption_flags_len \ - && __getopt_nonoption_flags[GNoptind] == '1')) -#else #define NONOPTION_P (argv[GNoptind][0] != '-' || argv[GNoptind][1] == '\0') -#endif if (nextchar == NULL || *nextchar == '\0') { @@ -866,8 +767,7 @@ GN_getopt_internal (int argc, char *const *argv, const char *optstring, else { if (GNopterr) - FPRINTF (stderr, _("\ -%s: option `-W %s' does not allow an argument\n"), argv[0], pfound->name); + FPRINTF (stderr, _("%s: option `-W %s' does not allow an argument\n"), argv[0], pfound->name); nextchar += strlen (nextchar); return '?'; @@ -1039,8 +939,10 @@ GNUNET_GETOPT_run (const char *binaryOptions, GNUNET_free (shorts); GNUNET_free (long_options); - if (cont == GNUNET_SYSERR) - return GNUNET_SYSERR; + if (cont != GNUNET_OK) + { + return cont; + } return GNoptind; } |