… | |
… | |
33 | |
33 | |
34 | /* place holders used for parsing command-line options */ |
34 | /* place holders used for parsing command-line options */ |
35 | #define Optflag_Reverse 0x40000000UL |
35 | #define Optflag_Reverse 0x40000000UL |
36 | #define Optflag_Boolean 0x80000000UL |
36 | #define Optflag_Boolean 0x80000000UL |
37 | #define Optflag_mask 0x3fffffffUL |
37 | #define Optflag_mask 0x3fffffffUL |
38 | |
|
|
39 | /* #define DEBUG_RESOURCES */ |
|
|
40 | |
38 | |
41 | /*{{{ monolithic option/resource structure: */ |
39 | /*{{{ monolithic option/resource structure: */ |
42 | /* |
40 | /* |
43 | * `string' options MUST have a usage argument |
41 | * `string' options MUST have a usage argument |
44 | * `switch' and `boolean' options have no argument |
42 | * `switch' and `boolean' options have no argument |
… | |
… | |
492 | { |
490 | { |
493 | unsigned int entry, longopt = 0; |
491 | unsigned int entry, longopt = 0; |
494 | const char *flag, *opt; |
492 | const char *flag, *opt; |
495 | |
493 | |
496 | opt = argv[i]; |
494 | opt = argv[i]; |
497 | #ifdef DEBUG_RESOURCES |
495 | |
498 | fprintf (stderr, "argv[%d] = %s: ", i, opt); |
|
|
499 | #endif |
|
|
500 | if (*opt == '-') |
496 | if (*opt == '-') |
501 | { |
497 | { |
502 | flag = On; |
498 | flag = On; |
503 | if (*++opt == '-') |
499 | if (*++opt == '-') |
504 | longopt = *opt++; /* long option */ |
500 | longopt = *opt++; /* long option */ |
… | |
… | |
545 | rs[optList[entry].doff] = flag == On && argv[i+1] |
541 | rs[optList[entry].doff] = flag == On && argv[i+1] |
546 | ? argv[++i] : 0; |
542 | ? argv[++i] : 0; |
547 | } |
543 | } |
548 | else |
544 | else |
549 | { /* boolean value */ |
545 | { /* boolean value */ |
550 | #ifdef DEBUG_RESOURCES |
|
|
551 | fprintf (stderr, "boolean (%s,%s) = %s\n", |
|
|
552 | optList[entry].opt, optList[entry].kw, flag); |
|
|
553 | #endif |
|
|
554 | set_option (optList[entry].flag & Optflag_mask, flag == On); |
546 | set_option (optList[entry].flag & Optflag_mask, flag == On); |
555 | |
547 | |
556 | if (optList[entry].doff != -1) |
548 | if (optList[entry].doff != -1) |
557 | rs[optList[entry].doff] = flag; |
549 | rs[optList[entry].doff] = flag; |
558 | } |
550 | } |