| /* Getopt tests */ |
| |
| #include <stdio.h> |
| #include <string.h> |
| #include <stdlib.h> |
| #include <getopt.h> |
| |
| |
| int main (int argc, char **argv) |
| { |
| int c; |
| int digit_optind = 0; |
| |
| while (1) |
| { |
| int this_option_optind = optind ? optind : 1; |
| int option_index = 0; |
| static struct option long_options[] = |
| { |
| {"add", 1, 0, 0}, |
| {"append", 0, 0, 0}, |
| {"delete", 1, 0, 0}, |
| {"verbose", 0, 0, 0}, |
| {"create", 0, 0, 0}, |
| {"file", 1, 0, 0}, |
| {0, 0, 0, 0} |
| }; |
| |
| c = getopt_long (argc, argv, "abc:d:0123456789", |
| long_options, &option_index); |
| if (c == EOF) |
| break; |
| |
| switch (c) |
| { |
| case 0: |
| printf ("option %s", long_options[option_index].name); |
| if (optarg) |
| printf (" with arg %s", optarg); |
| printf ("\n"); |
| break; |
| |
| case '0': |
| case '1': |
| case '2': |
| case '3': |
| case '4': |
| case '5': |
| case '6': |
| case '7': |
| case '8': |
| case '9': |
| if (digit_optind != 0 && digit_optind != this_option_optind) |
| printf ("digits occur in two different argv-elements.\n"); |
| digit_optind = this_option_optind; |
| printf ("option %c\n", c); |
| break; |
| |
| case 'a': |
| printf ("option a\n"); |
| break; |
| |
| case 'b': |
| printf ("option b\n"); |
| break; |
| |
| case 'c': |
| printf ("option c with value `%s'\n", optarg); |
| break; |
| |
| case 'd': |
| printf ("option d with value `%s'\n", optarg); |
| break; |
| |
| case '?': |
| break; |
| |
| default: |
| printf ("?? getopt returned character code 0%o ??\n", c); |
| } |
| } |
| |
| if (optind < argc) |
| { |
| printf ("non-option ARGV-elements: "); |
| while (optind < argc) |
| printf ("%s ", argv[optind++]); |
| printf ("\n"); |
| } |
| |
| exit (0); |
| } |
| |