diff options
author | ridiculousfish <corydoras@ridiculousfish.com> | 2012-11-18 16:30:30 -0800 |
---|---|---|
committer | ridiculousfish <corydoras@ridiculousfish.com> | 2012-11-18 16:30:30 -0800 |
commit | 9992b8eb0e3366ff8a3948aa0b66a19c3c12c737 (patch) | |
tree | 6dda0fef85812016fbba9ea067c9d586092b506d /wgetopt.cpp | |
parent | bab69f26724028d16054a3daf5c78aad7c67bb2d (diff) |
Apply new indentation, brace, and whitespace style
Diffstat (limited to 'wgetopt.cpp')
-rw-r--r-- | wgetopt.cpp | 658 |
1 files changed, 329 insertions, 329 deletions
diff --git a/wgetopt.cpp b/wgetopt.cpp index 3e8f8dea..7052f5eb 100644 --- a/wgetopt.cpp +++ b/wgetopt.cpp @@ -170,7 +170,7 @@ of the value of `ordering'. In the case of RETURN_IN_ORDER, only static enum { - REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER + REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER } ordering; /* Value of POSIXLY_CORRECT environment variable. */ @@ -180,7 +180,7 @@ static char *posixly_correct; Use translation functions if available */ #ifdef _ - #undef _ +#undef _ #endif #ifdef HAVE_TRANSLATE_H @@ -205,18 +205,18 @@ static char *posixly_correct; /* Avoid depending on library functions or files whose names are inconsistent. */ -char *getenv (); +char *getenv(); static wchar_t * -my_index (const wchar_t *str, int chr) +my_index(const wchar_t *str, int chr) { - while (*str) + while (*str) { - if (*str == chr) - return (wchar_t *) str; - str++; + if (*str == chr) + return (wchar_t *) str; + str++; } - return 0; + return 0; } /* If using GCC, we can safely declare strlen this way. @@ -227,7 +227,7 @@ my_index (const wchar_t *str, int chr) #if !defined (__STDC__) || !__STDC__ /* gcc with -traditional declares the built-in strlen to return int, and has done so at least since version 2.4.5. -- rms. */ -extern int wcslen (const wchar_t *); +extern int wcslen(const wchar_t *); #endif /* not __STDC__ */ #endif /* __GNUC__ */ @@ -252,93 +252,93 @@ static int last_nonopt; the new indices of the non-options in ARGV after they are moved. */ static void -exchange (wchar_t **argv) +exchange(wchar_t **argv) { - int bottom = first_nonopt; - int middle = last_nonopt; - int top = woptind; - wchar_t *tem; + int bottom = first_nonopt; + int middle = last_nonopt; + int top = woptind; + wchar_t *tem; - /* Exchange the shorter segment with the far end of the longer segment. - That puts the shorter segment into the right place. - It leaves the longer segment in the right place overall, - but it consists of two parts that need to be swapped next. */ + /* Exchange the shorter segment with the far end of the longer segment. + That puts the shorter segment into the right place. + It leaves the longer segment in the right place overall, + but it consists of two parts that need to be swapped next. */ - while (top > middle && middle > bottom) + while (top > middle && middle > bottom) { - if (top - middle > middle - bottom) - { - /* Bottom segment is the short one. */ - int len = middle - bottom; - register int i; - - /* Swap it with the top part of the top segment. */ - for (i = 0; i < len; i++) - { - tem = argv[bottom + i]; - argv[bottom + i] = argv[top - (middle - bottom) + i]; - argv[top - (middle - bottom) + i] = tem; - } - /* Exclude the moved bottom segment from further swapping. */ - top -= len; - } - else - { - /* Top segment is the short one. */ - int len = top - middle; - register int i; - - /* Swap it with the bottom part of the bottom segment. */ - for (i = 0; i < len; i++) - { - tem = argv[bottom + i]; - argv[bottom + i] = argv[middle + i]; - argv[middle + i] = tem; - } - /* Exclude the moved top segment from further swapping. */ - bottom += len; - } + if (top - middle > middle - bottom) + { + /* Bottom segment is the short one. */ + int len = middle - bottom; + register int i; + + /* Swap it with the top part of the top segment. */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[top - (middle - bottom) + i]; + argv[top - (middle - bottom) + i] = tem; + } + /* Exclude the moved bottom segment from further swapping. */ + top -= len; + } + else + { + /* Top segment is the short one. */ + int len = top - middle; + register int i; + + /* Swap it with the bottom part of the bottom segment. */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[middle + i]; + argv[middle + i] = tem; + } + /* Exclude the moved top segment from further swapping. */ + bottom += len; + } } - /* Update records for the slots the non-options now occupy. */ + /* Update records for the slots the non-options now occupy. */ - first_nonopt += (woptind - last_nonopt); - last_nonopt = woptind; + first_nonopt += (woptind - last_nonopt); + last_nonopt = woptind; } /* Initialize the internal data when the first call is made. */ static const wchar_t * -_wgetopt_initialize (const wchar_t *optstring) +_wgetopt_initialize(const wchar_t *optstring) { - /* Start processing options with ARGV-element 1 (since ARGV-element 0 - is the program name); the sequence of previously skipped - non-option ARGV-elements is empty. */ + /* Start processing options with ARGV-element 1 (since ARGV-element 0 + is the program name); the sequence of previously skipped + non-option ARGV-elements is empty. */ - first_nonopt = last_nonopt = woptind = 1; + first_nonopt = last_nonopt = woptind = 1; - nextchar = NULL; + nextchar = NULL; - posixly_correct = getenv ("POSIXLY_CORRECT"); + posixly_correct = getenv("POSIXLY_CORRECT"); - /* Determine how to handle the ordering of options and nonoptions. */ + /* Determine how to handle the ordering of options and nonoptions. */ - if (optstring[0] == '-') + if (optstring[0] == '-') { - ordering = RETURN_IN_ORDER; - ++optstring; + ordering = RETURN_IN_ORDER; + ++optstring; } - else if (optstring[0] == '+') + else if (optstring[0] == '+') { - ordering = REQUIRE_ORDER; - ++optstring; + ordering = REQUIRE_ORDER; + ++optstring; } - else if (posixly_correct != NULL) - ordering = REQUIRE_ORDER; - else - ordering = PERMUTE; + else if (posixly_correct != NULL) + ordering = REQUIRE_ORDER; + else + ordering = PERMUTE; - return optstring; + return optstring; } /* Scan elements of ARGV (whose length is ARGC) for option characters @@ -398,314 +398,314 @@ _wgetopt_initialize (const wchar_t *optstring) long-named options. */ int -_wgetopt_internal (int argc, wchar_t *const *argv, const wchar_t *optstring, const struct woption *longopts, int *longind, int long_only) +_wgetopt_internal(int argc, wchar_t *const *argv, const wchar_t *optstring, const struct woption *longopts, int *longind, int long_only) { - woptarg = NULL; + woptarg = NULL; - if (woptind == 0) - optstring = _wgetopt_initialize (optstring); + if (woptind == 0) + optstring = _wgetopt_initialize(optstring); - if (nextchar == NULL || *nextchar == '\0') + if (nextchar == NULL || *nextchar == '\0') { - /* Advance to the next ARGV-element. */ + /* Advance to the next ARGV-element. */ - if (ordering == PERMUTE) - { - /* If we have just processed some options following some non-options, - exchange them so that the options come first. */ + if (ordering == PERMUTE) + { + /* If we have just processed some options following some non-options, + exchange them so that the options come first. */ - if (first_nonopt != last_nonopt && last_nonopt != woptind) - exchange ((wchar_t **) argv); - else if (last_nonopt != woptind) - first_nonopt = woptind; + if (first_nonopt != last_nonopt && last_nonopt != woptind) + exchange((wchar_t **) argv); + else if (last_nonopt != woptind) + first_nonopt = woptind; - /* Skip any additional non-options - and extend the range of non-options previously skipped. */ + /* Skip any additional non-options + and extend the range of non-options previously skipped. */ - while (woptind < argc - && (argv[woptind][0] != '-' || argv[woptind][1] == '\0')) - woptind++; - last_nonopt = woptind; - } + while (woptind < argc + && (argv[woptind][0] != '-' || argv[woptind][1] == '\0')) + woptind++; + last_nonopt = woptind; + } - /* The special ARGV-element `--' means premature end of options. - Skip it like a null option, - then exchange with previous non-options as if it were an option, - then skip everything else like a non-option. */ + /* The special ARGV-element `--' means premature end of options. + Skip it like a null option, + then exchange with previous non-options as if it were an option, + then skip everything else like a non-option. */ - if (woptind != argc && !wcscmp (argv[woptind], L"--")) - { - woptind++; + if (woptind != argc && !wcscmp(argv[woptind], L"--")) + { + woptind++; - if (first_nonopt != last_nonopt && last_nonopt != woptind) - exchange ((wchar_t **) argv); - else if (first_nonopt == last_nonopt) - first_nonopt = woptind; - last_nonopt = argc; + if (first_nonopt != last_nonopt && last_nonopt != woptind) + exchange((wchar_t **) argv); + else if (first_nonopt == last_nonopt) + first_nonopt = woptind; + last_nonopt = argc; - woptind = argc; - } + woptind = argc; + } - /* If we have done all the ARGV-elements, stop the scan - and back over any non-options that we skipped and permuted. */ + /* If we have done all the ARGV-elements, stop the scan + and back over any non-options that we skipped and permuted. */ - if (woptind == argc) - { - /* Set the next-arg-index to point at the non-options - that we previously skipped, so the caller will digest them. */ - if (first_nonopt != last_nonopt) - woptind = first_nonopt; - return EOF; - } + if (woptind == argc) + { + /* Set the next-arg-index to point at the non-options + that we previously skipped, so the caller will digest them. */ + if (first_nonopt != last_nonopt) + woptind = first_nonopt; + return EOF; + } - /* If we have come to a non-option and did not permute it, - either stop the scan or describe it to the caller and pass it by. */ + /* If we have come to a non-option and did not permute it, + either stop the scan or describe it to the caller and pass it by. */ - if ((argv[woptind][0] != '-' || argv[woptind][1] == '\0')) - { - if (ordering == REQUIRE_ORDER) - return EOF; - woptarg = argv[woptind++]; - return 1; - } + if ((argv[woptind][0] != '-' || argv[woptind][1] == '\0')) + { + if (ordering == REQUIRE_ORDER) + return EOF; + woptarg = argv[woptind++]; + return 1; + } - /* We have found another option-ARGV-element. - Skip the initial punctuation. */ + /* We have found another option-ARGV-element. + Skip the initial punctuation. */ - nextchar = (argv[woptind] + 1 - + (longopts != NULL && argv[woptind][1] == '-')); + nextchar = (argv[woptind] + 1 + + (longopts != NULL && argv[woptind][1] == '-')); } - /* Decode the current option-ARGV-element. */ + /* Decode the current option-ARGV-element. */ - /* Check whether the ARGV-element is a long option. + /* Check whether the ARGV-element is a long option. - If long_only and the ARGV-element has the form "-f", where f is - a valid short option, don't consider it an abbreviated form of - a long option that starts with f. Otherwise there would be no - way to give the -f short option. + If long_only and the ARGV-element has the form "-f", where f is + a valid short option, don't consider it an abbreviated form of + a long option that starts with f. Otherwise there would be no + way to give the -f short option. - On the other hand, if there's a long option "fubar" and - the ARGV-element is "-fu", do consider that an abbreviation of - the long option, just like "--fu", and not "-f" with arg "u". + On the other hand, if there's a long option "fubar" and + the ARGV-element is "-fu", do consider that an abbreviation of + the long option, just like "--fu", and not "-f" with arg "u". - This distinction seems to be the most useful approach. */ + This distinction seems to be the most useful approach. */ - if (longopts != NULL - && (argv[woptind][1] == '-' - || (long_only && (argv[woptind][2] || !my_index (optstring, argv[woptind][1]))))) + if (longopts != NULL + && (argv[woptind][1] == '-' + || (long_only && (argv[woptind][2] || !my_index(optstring, argv[woptind][1]))))) { - wchar_t *nameend; - const struct woption *p; - const struct woption *pfound = NULL; - int exact = 0; - int ambig = 0; - int indfound = 0; /* set to zero by Anton */ - int option_index; - - for (nameend = nextchar; *nameend && *nameend != '='; nameend++) - /* Do nothing. */ ; - - /* Test all long options for either exact match - or abbreviated matches. */ - for (p = longopts, option_index = 0; p->name; p++, option_index++) - if (!wcsncmp(p->name, nextchar, nameend - nextchar)) - { - if ((unsigned int)(nameend - nextchar) == (unsigned int)wcslen (p->name)) + wchar_t *nameend; + const struct woption *p; + const struct woption *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = 0; /* set to zero by Anton */ + int option_index; + + for (nameend = nextchar; *nameend && *nameend != '='; nameend++) + /* Do nothing. */ ; + + /* Test all long options for either exact match + or abbreviated matches. */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!wcsncmp(p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int)(nameend - nextchar) == (unsigned int)wcslen(p->name)) + { + /* Exact match found. */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } + else if (pfound == NULL) + { + /* First nonexact match found. */ + pfound = p; + indfound = option_index; + } + else + /* Second or later nonexact match found. */ + ambig = 1; + } + + if (ambig && !exact) { - /* Exact match found. */ - pfound = p; - indfound = option_index; - exact = 1; - break; + if (wopterr) + fwprintf(stderr, _(L"%ls: Option '%ls' is ambiguous\n"), + argv[0], argv[woptind]); + nextchar += wcslen(nextchar); + woptind++; + return '?'; } - else if (pfound == NULL) - { - /* First nonexact match found. */ - pfound = p; - indfound = option_index; - } - else - /* Second or later nonexact match found. */ - ambig = 1; - } - if (ambig && !exact) - { - if (wopterr) - fwprintf (stderr, _(L"%ls: Option '%ls' is ambiguous\n"), - argv[0], argv[woptind]); - nextchar += wcslen (nextchar); - woptind++; - return '?'; - } - - if (pfound != NULL) - { - option_index = indfound; - woptind++; - if (*nameend) - { - /* Don't test has_arg with >, because some C compilers don't - allow it to be used on enums. */ - if (pfound->has_arg) - woptarg = nameend + 1; - else + if (pfound != NULL) { - if (wopterr) - { - if (argv[woptind - 1][1] == '-') - /* --option */ - fwprintf (stderr, - _(L"%ls: Option '--%ls' doesn't allow an argument\n"), - argv[0], pfound->name); - else - /* +option or -option */ - fwprintf (stderr, - _(L"%ls: Option '%lc%ls' doesn't allow an argument\n"), - argv[0], argv[woptind - 1][0], pfound->name); - } - nextchar += wcslen (nextchar); - return '?'; + option_index = indfound; + woptind++; + if (*nameend) + { + /* Don't test has_arg with >, because some C compilers don't + allow it to be used on enums. */ + if (pfound->has_arg) + woptarg = nameend + 1; + else + { + if (wopterr) + { + if (argv[woptind - 1][1] == '-') + /* --option */ + fwprintf(stderr, + _(L"%ls: Option '--%ls' doesn't allow an argument\n"), + argv[0], pfound->name); + else + /* +option or -option */ + fwprintf(stderr, + _(L"%ls: Option '%lc%ls' doesn't allow an argument\n"), + argv[0], argv[woptind - 1][0], pfound->name); + } + nextchar += wcslen(nextchar); + return '?'; + } + } + else if (pfound->has_arg == 1) + { + if (woptind < argc) + woptarg = argv[woptind++]; + else + { + if (wopterr) + fwprintf(stderr, _(L"%ls: Option '%ls' requires an argument\n"), + argv[0], argv[woptind - 1]); + nextchar += wcslen(nextchar); + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += wcslen(nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; } - } - else if (pfound->has_arg == 1) - { - if (woptind < argc) - woptarg = argv[woptind++]; - else + + /* Can't find it as a long option. If this is not getopt_long_only, + or the option starts with '--' or is not a valid short + option, then it's an error. + Otherwise interpret it as a short option. */ + if (!long_only || argv[woptind][1] == '-' + || my_index(optstring, *nextchar) == NULL) { - if (wopterr) - fwprintf (stderr, _(L"%ls: Option '%ls' requires an argument\n"), - argv[0], argv[woptind - 1]); - nextchar += wcslen (nextchar); - return optstring[0] == ':' ? ':' : '?'; + if (wopterr) + { + if (argv[woptind][1] == '-') + /* --option */ + fwprintf(stderr, _(L"%ls: Unrecognized option '--%ls'\n"), + argv[0], nextchar); + else + /* +option or -option */ + fwprintf(stderr, _(L"%ls: Unrecognized option '%lc%ls'\n"), + argv[0], argv[woptind][0], nextchar); + } + nextchar = (wchar_t *) L""; + woptind++; + return '?'; } - } - nextchar += wcslen (nextchar); - if (longind != NULL) - *longind = option_index; - if (pfound->flag) - { - *(pfound->flag) = pfound->val; - return 0; - } - return pfound->val; - } - - /* Can't find it as a long option. If this is not getopt_long_only, - or the option starts with '--' or is not a valid short - option, then it's an error. - Otherwise interpret it as a short option. */ - if (!long_only || argv[woptind][1] == '-' - || my_index (optstring, *nextchar) == NULL) - { - if (wopterr) - { - if (argv[woptind][1] == '-') - /* --option */ - fwprintf (stderr, _(L"%ls: Unrecognized option '--%ls'\n"), - argv[0], nextchar); - else - /* +option or -option */ - fwprintf (stderr, _(L"%ls: Unrecognized option '%lc%ls'\n"), - argv[0], argv[woptind][0], nextchar); - } - nextchar = (wchar_t *) L""; - woptind++; - return '?'; - } } - /* Look at and handle the next short option-character. */ + /* Look at and handle the next short option-character. */ - { - wchar_t c = *nextchar++; - wchar_t *temp = const_cast<wchar_t*>(my_index (optstring, c)); + { + wchar_t c = *nextchar++; + wchar_t *temp = const_cast<wchar_t*>(my_index(optstring, c)); - /* Increment `woptind' when we start to process its last character. */ - if (*nextchar == '\0') - ++woptind; + /* Increment `woptind' when we start to process its last character. */ + if (*nextchar == '\0') + ++woptind; - if (temp == NULL || c == ':') - { - if (wopterr) - { - if (posixly_correct) - /* 1003.2 specifies the format of this message. */ - fwprintf (stderr, _(L"%ls: Illegal option -- %lc\n"), argv[0], c); - else - fwprintf (stderr, _(L"%ls: Invalid option -- %lc\n"), argv[0], c); - } - woptopt = c; - return '?'; - } - if (temp[1] == ':') - { - if (temp[2] == ':') - { - /* This is an option that accepts an argument optionally. */ - if (*nextchar != '\0') - { - woptarg = nextchar; - woptind++; - } - else - woptarg = NULL; - nextchar = NULL; - } - else - { - /* This is an option that requires an argument. */ - if (*nextchar != '\0') + if (temp == NULL || c == ':') { - woptarg = nextchar; - /* If we end this ARGV-element by taking the rest as an arg, - we must advance to the next element now. */ - woptind++; + if (wopterr) + { + if (posixly_correct) + /* 1003.2 specifies the format of this message. */ + fwprintf(stderr, _(L"%ls: Illegal option -- %lc\n"), argv[0], c); + else + fwprintf(stderr, _(L"%ls: Invalid option -- %lc\n"), argv[0], c); + } + woptopt = c; + return '?'; } - else if (woptind == argc) + if (temp[1] == ':') { - if (wopterr) - { - /* 1003.2 specifies the format of this message. */ - fwprintf (stderr, _(L"%ls: Option requires an argument -- %lc\n"), - argv[0], c); - } - woptopt = c; - if (optstring[0] == ':') - c = ':'; - else - c = '?'; + if (temp[2] == ':') + { + /* This is an option that accepts an argument optionally. */ + if (*nextchar != '\0') + { + woptarg = nextchar; + woptind++; + } + else + woptarg = NULL; + nextchar = NULL; + } + else + { + /* This is an option that requires an argument. */ + if (*nextchar != '\0') + { + woptarg = nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + woptind++; + } + else if (woptind == argc) + { + if (wopterr) + { + /* 1003.2 specifies the format of this message. */ + fwprintf(stderr, _(L"%ls: Option requires an argument -- %lc\n"), + argv[0], c); + } + woptopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + } + else + /* We already incremented `woptind' once; + increment it again when taking next ARGV-elt as argument. */ + woptarg = argv[woptind++]; + nextchar = NULL; + } } - else - /* We already incremented `woptind' once; - increment it again when taking next ARGV-elt as argument. */ - woptarg = argv[woptind++]; - nextchar = NULL; - } + return c; } - return c; - } } int -wgetopt (int argc, wchar_t *const *argv, const wchar_t *optstring) +wgetopt(int argc, wchar_t *const *argv, const wchar_t *optstring) { - return _wgetopt_internal (argc, argv, optstring, - (const struct woption *) 0, - (int *) 0, - 0); + return _wgetopt_internal(argc, argv, optstring, + (const struct woption *) 0, + (int *) 0, + 0); } int -wgetopt_long (int argc, wchar_t *const *argv, const wchar_t *options, const struct woption *long_options, int *opt_index) +wgetopt_long(int argc, wchar_t *const *argv, const wchar_t *options, const struct woption *long_options, int *opt_index) { - return _wgetopt_internal (argc, argv, options, long_options, opt_index, 0); + return _wgetopt_internal(argc, argv, options, long_options, opt_index, 0); } int -wgetopt_long_only (int argc, wchar_t *const *argv, const wchar_t *options, const struct woption *long_options, int *opt_index) +wgetopt_long_only(int argc, wchar_t *const *argv, const wchar_t *options, const struct woption *long_options, int *opt_index) { - return _wgetopt_internal (argc, argv, options, long_options, opt_index, 1); + return _wgetopt_internal(argc, argv, options, long_options, opt_index, 1); } |