| Index: fusl/src/misc/getopt.c
|
| diff --git a/fusl/src/misc/getopt.c b/fusl/src/misc/getopt.c
|
| index 921798303f747ca8edf6b13cfc1508c9f5191242..a2c8739965935bfdb729ecd98a53f96bf9930b51 100644
|
| --- a/fusl/src/misc/getopt.c
|
| +++ b/fusl/src/misc/getopt.c
|
| @@ -6,98 +6,99 @@
|
| #include "libc.h"
|
| #include "locale_impl.h"
|
|
|
| -char *optarg;
|
| -int optind=1, opterr=1, optopt, __optpos, __optreset=0;
|
| +char* optarg;
|
| +int optind = 1, opterr = 1, optopt, __optpos, __optreset = 0;
|
|
|
| #define optpos __optpos
|
| weak_alias(__optreset, optreset);
|
|
|
| -void __getopt_msg(const char *a, const char *b, const char *c, size_t l)
|
| -{
|
| - FILE *f = stderr;
|
| - b = __lctrans_cur(b);
|
| - flockfile(f);
|
| - fwrite(a, strlen(a), 1, f)
|
| - && fwrite(b, strlen(b), 1, f)
|
| - && fwrite(c, l, 1, f)
|
| - && putc('\n', f);
|
| - funlockfile(f);
|
| +void __getopt_msg(const char* a, const char* b, const char* c, size_t l) {
|
| + FILE* f = stderr;
|
| + b = __lctrans_cur(b);
|
| + flockfile(f);
|
| + fwrite(a, strlen(a), 1, f) && fwrite(b, strlen(b), 1, f) &&
|
| + fwrite(c, l, 1, f) && putc('\n', f);
|
| + funlockfile(f);
|
| }
|
|
|
| -int getopt(int argc, char * const argv[], const char *optstring)
|
| -{
|
| - int i;
|
| - wchar_t c, d;
|
| - int k, l;
|
| - char *optchar;
|
| +int getopt(int argc, char* const argv[], const char* optstring) {
|
| + int i;
|
| + wchar_t c, d;
|
| + int k, l;
|
| + char* optchar;
|
|
|
| - if (!optind || __optreset) {
|
| - __optreset = 0;
|
| - __optpos = 0;
|
| - optind = 1;
|
| - }
|
| + if (!optind || __optreset) {
|
| + __optreset = 0;
|
| + __optpos = 0;
|
| + optind = 1;
|
| + }
|
|
|
| - if (optind >= argc || !argv[optind])
|
| - return -1;
|
| + if (optind >= argc || !argv[optind])
|
| + return -1;
|
|
|
| - if (argv[optind][0] != '-') {
|
| - if (optstring[0] == '-') {
|
| - optarg = argv[optind++];
|
| - return 1;
|
| - }
|
| - return -1;
|
| - }
|
| + if (argv[optind][0] != '-') {
|
| + if (optstring[0] == '-') {
|
| + optarg = argv[optind++];
|
| + return 1;
|
| + }
|
| + return -1;
|
| + }
|
|
|
| - if (!argv[optind][1])
|
| - return -1;
|
| + if (!argv[optind][1])
|
| + return -1;
|
|
|
| - if (argv[optind][1] == '-' && !argv[optind][2])
|
| - return optind++, -1;
|
| + if (argv[optind][1] == '-' && !argv[optind][2])
|
| + return optind++, -1;
|
|
|
| - if (!optpos) optpos++;
|
| - if ((k = mbtowc(&c, argv[optind]+optpos, MB_LEN_MAX)) < 0) {
|
| - k = 1;
|
| - c = 0xfffd; /* replacement char */
|
| - }
|
| - optchar = argv[optind]+optpos;
|
| - optopt = c;
|
| - optpos += k;
|
| + if (!optpos)
|
| + optpos++;
|
| + if ((k = mbtowc(&c, argv[optind] + optpos, MB_LEN_MAX)) < 0) {
|
| + k = 1;
|
| + c = 0xfffd; /* replacement char */
|
| + }
|
| + optchar = argv[optind] + optpos;
|
| + optopt = c;
|
| + optpos += k;
|
|
|
| - if (!argv[optind][optpos]) {
|
| - optind++;
|
| - optpos = 0;
|
| - }
|
| + if (!argv[optind][optpos]) {
|
| + optind++;
|
| + optpos = 0;
|
| + }
|
|
|
| - if (optstring[0] == '-' || optstring[0] == '+')
|
| - optstring++;
|
| + if (optstring[0] == '-' || optstring[0] == '+')
|
| + optstring++;
|
|
|
| - i = 0;
|
| - d = 0;
|
| - do {
|
| - l = mbtowc(&d, optstring+i, MB_LEN_MAX);
|
| - if (l>0) i+=l; else i++;
|
| - } while (l && d != c);
|
| + i = 0;
|
| + d = 0;
|
| + do {
|
| + l = mbtowc(&d, optstring + i, MB_LEN_MAX);
|
| + if (l > 0)
|
| + i += l;
|
| + else
|
| + i++;
|
| + } while (l && d != c);
|
|
|
| - if (d != c) {
|
| - if (optstring[0] != ':' && opterr)
|
| - __getopt_msg(argv[0], ": unrecognized option: ", optchar, k);
|
| - return '?';
|
| - }
|
| - if (optstring[i] == ':') {
|
| - if (optstring[i+1] == ':') optarg = 0;
|
| - else if (optind >= argc) {
|
| - if (optstring[0] == ':') return ':';
|
| - if (opterr) __getopt_msg(argv[0],
|
| - ": option requires an argument: ",
|
| - optchar, k);
|
| - return '?';
|
| - }
|
| - if (optstring[i+1] != ':' || optpos) {
|
| - optarg = argv[optind++] + optpos;
|
| - optpos = 0;
|
| - }
|
| - }
|
| - return c;
|
| + if (d != c) {
|
| + if (optstring[0] != ':' && opterr)
|
| + __getopt_msg(argv[0], ": unrecognized option: ", optchar, k);
|
| + return '?';
|
| + }
|
| + if (optstring[i] == ':') {
|
| + if (optstring[i + 1] == ':')
|
| + optarg = 0;
|
| + else if (optind >= argc) {
|
| + if (optstring[0] == ':')
|
| + return ':';
|
| + if (opterr)
|
| + __getopt_msg(argv[0], ": option requires an argument: ", optchar, k);
|
| + return '?';
|
| + }
|
| + if (optstring[i + 1] != ':' || optpos) {
|
| + optarg = argv[optind++] + optpos;
|
| + optpos = 0;
|
| + }
|
| + }
|
| + return c;
|
| }
|
|
|
| weak_alias(getopt, __posix_getopt);
|
|
|