2 This getopt_long() is compatible with GNU's, however, added original
3 extention (short 1 byte option).
6 Copyright (c) 2004 Koji Arai
8 Permission is hereby granted, free of charge, to any person
9 obtaining a copy of this software and associated documentation files
10 (the "Software"), to deal in the Software without restriction,
11 including without limitation the rights to use, copy, modify, merge,
12 publish, distribute, sublicense, and/or sell copies of the Software,
13 and to permit persons to whom the Software is furnished to do so,
14 subject to the following conditions:
16 The above copyright notice and this permission notice shall be
17 included in all copies or substantial portions of the Software.
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
23 BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
24 ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
25 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32 cc -DUSE_GNU -DDEBUG getopt_long.c -o test_getopt_long_gnu
35 cc -I. -DDEBUG getopt_long.c -o test_getopt_long
38 ./test_getopt_long_gnu
41 * not implemented any features for getopt() and getopt_long().
50 puts_argv(char **argv)
54 for (i = 0; argv[i]; i++) {
57 printf("%s", argv[i]);
67 #include "getopt_long.h"
76 return value 0: no option (include '-')
77 1: short option like '-x'
78 2: long option like '--xxx' and just '--'
85 case 0: /* just "-" */
87 case '-': /* long option (include just "--")*/
89 default: /* short option */
97 insert_argv(char **argv, int src, int dest)
100 char *tmp = argv[src];
103 for (i = src; i > dest; i--)
107 for (i = src; i < dest; i++)
117 search_longopt(char *arg, struct option *longopts)
121 for (len = 0; arg[len] && arg[len] != '='; len++)
124 for (i = 0; longopts[i].name; i++) {
125 if (strncmp(arg, longopts[i].name, len) == 0) {
127 return -1; /* found some candidate */
135 * implemented my extention feature.
136 * optional 1 byte argument with [...]
137 * e.g.) shortopts = "a[0123]b"
138 * accepts "-a0 -a1b" (same as "-a0 -a1 -b")
141 has_argument_short(char *arg, const char *shortopts)
144 int open_bracket = 0;
145 for (i = 0; shortopts[i]; i++) {
146 switch (shortopts[i]) {
151 if (open_bracket <= 0) {
152 fprintf(stderr, "getopt_long() -- unbalanced bracket in short options");
158 if (open_bracket) continue;
159 if (*arg != shortopts[i]) continue;
161 switch (shortopts[i+1]) {
163 if (shortopts[i+2] != ':') {
165 return 1; /* following string is argument */
167 return 2; /* next argv is argument */
170 /* '::' means optional argument (GNU extention) */
174 return 0; /* no argument */
178 return 0; /* no argument */
180 for (i++; shortopts[i] && shortopts[i] != ']'; i++) {
181 if (arg[1] == shortopts[i])
182 return 3; /* has 1 byte argument */
185 fprintf(stderr, "getopt_long() -- unbalanced bracket in short options");
190 return 0; /* no argument */
198 has_argument_long(char *arg, struct option *longopts)
202 i = search_longopt(arg, longopts);
208 int len = strlen(arg);
209 char *p = strchr(arg, '=');
214 switch (longopts[i].has_arg) {
217 case required_argument:
222 case optional_argument:
236 1: has argument in this argv
237 2: has argument in next argv
238 3: has 1 byte argument in this argv
241 has_argument(char *arg,
242 const char *shortopts,
243 struct option *longopts)
247 switch (is_option(arg)) {
248 case 0: /* no option */
253 for (i = 1; arg[i]; i++) {
254 n = has_argument_short(arg+i, shortopts);
255 if (n == 0 && arg[i+1]) continue;
256 if (n == 3 && arg[i+2]) { i++; continue; }
262 return has_argument_long(arg+2, longopts);
270 getopt_long(int argc, char **argv,
271 const char *shortopts,
272 struct option *longopts,
277 static int shortoptind;
278 static int no_optind = 0;
280 if (optind == 0) { /* skip first argument (command name) */
288 if (no_optind && !shortoptind) {
289 while (!is_option(argv[no_optind]))
290 insert_argv(argv, no_optind, optind-1);
292 if (has_argument(argv[no_optind], shortopts, longopts) == 2)
297 if (argv[optind] && strcmp(argv[optind], "--") == 0) {
298 while (!is_option(argv[no_optind]))
299 insert_argv(argv, no_optind, optind);
310 puts_argv(&argv[optind]);
313 if (shortoptind == 0 && is_option(opt) == 1) {
319 char *p = &opt[shortoptind];
324 switch (has_argument_short(p, shortopts)) {
330 if (opt[shortoptind] == '\0')
331 optind++, shortoptind = 0;
334 /* following character is argument */
335 optind++, shortoptind = 0;
339 /* next argv is argument */
340 optind++, shortoptind = 0;
341 optarg = argv[optind++];
344 /* has 1 byte argument */
347 optind++, shortoptind = 0;
355 "%s: invalid option -- %c\n",
359 optind++, shortoptind = 0;
364 else if (opt[0] == '-' && opt[1] == '-') {
367 if (opt[2] == '\0') {
368 /* end of command line switch */
375 i = search_longopt(opt, longopts);
382 int len = strlen(opt);
383 char *p = strchr(opt, '=');
388 switch (longopts[i].has_arg) {
391 case required_argument:
393 optarg = opt + len + 1;
396 optarg = argv[optind];
400 "%s: option `--%s' requires an argument\n",
405 return '?'; /* no argument */
409 case optional_argument:
411 optarg = opt + len + 1;
422 if (longopts[i].flag) {
423 *longopts[i].flag = longopts[i].val;
427 return longopts[i].val;
440 for (i = optind; argv[i]; i++) {
441 if (is_option(argv[i])) {
464 #include <getopt.h> /* use GNU getopt_long() */
467 static int verbose_flag;
468 static int option_index;
473 static struct option long_options[] = {
474 {"verbose", no_argument, &verbose_flag, 1},
475 {"brief", no_argument, &verbose_flag, 0},
476 {"add", required_argument, 0, 'a'},
477 {"append", no_argument, 0, 0},
478 {"delete", required_argument, 0, 0},
479 {"create", optional_argument, 0, 0},
480 {"change", optional_argument, 0, 0},
485 call_getopt_long(int argc, char **argv,
486 const char *shortopts,
487 struct option *longopts,
491 c = getopt_long(argc, argv, shortopts, longopts, indexptr);
493 printf("ret=%d(%c) option_index=%d ", c, c, option_index);
494 printf("optind=%d optarg=[%s] opterr=%d optopt=%d(%c)\n",
495 optind, optarg, opterr, optopt, optopt);
498 opt = &longopts[*indexptr];
499 printf("long option: --%s has_arg=%d\n", opt->name, opt->has_arg);
501 printf(" flag=[%8p] val=%d\n", opt->flag, *opt->flag);
514 argc++; *p++ = "command_name";
516 argc++; *p++ = "-bcd";
523 /*************************/
524 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
527 assert(option_index == 0);
532 /*************************/
533 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
536 assert(option_index == 0);
541 /*************************/
542 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
545 assert(option_index == 0);
547 assert(optarg == &argv[2][3]);
550 /*************************/
551 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
554 assert(option_index == 0);
556 assert(optarg == argv[4]);
559 /*************************/
560 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
563 assert(option_index == 0);
566 assert(optopt == 'f');
568 /*************************/
569 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
572 assert(option_index == 0);
575 assert(optopt == 'g');
577 /*************************/
578 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
581 assert(option_index == 0);
584 assert(optopt == 'g'); /* no changed */
594 argc++; *p++ = "command_name";
595 argc++; *p++ = "--verbose";
596 argc++; *p++ = "--brief";
597 argc++; *p++ = "--add";
598 argc++; *p++ = "add_argument";
599 argc++; *p++ = "--add=add_argument";
600 argc++; *p++ = "--append";
601 argc++; *p++ = "--delete=del_argument";
602 argc++; *p++ = "--create=cre_argument";
603 argc++; *p++ = "--create";
604 argc++; *p++ = "files...";
607 /*************************/
608 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
611 assert(option_index == 0);
614 assert(optopt == 'g'); /* no changed */
615 assert(strcmp(long_options[option_index].name, "verbose") == 0);
616 assert(*long_options[option_index].flag == 1);
618 /*************************/
619 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
622 assert(option_index == 1);
625 assert(optopt == 'g'); /* no changed */
626 assert(strcmp(long_options[option_index].name, "brief") == 0);
627 assert(*long_options[option_index].flag == 0);
629 /*************************/
630 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
633 assert(option_index == 2);
635 assert(optarg == argv[4]);
636 assert(optopt == 'g'); /* no changed */
637 assert(strcmp(long_options[option_index].name, "add") == 0);
638 assert(long_options[option_index].flag == 0);
640 /*************************/
641 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
644 assert(option_index == 2);
646 assert(optarg == argv[5]+6);
647 assert(optopt == 'g'); /* no changed */
648 assert(strcmp(long_options[option_index].name, "add") == 0);
649 assert(long_options[option_index].flag == 0);
651 /*************************/
652 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
655 assert(option_index == 3);
658 assert(optopt == 'g'); /* no changed */
659 assert(strcmp(long_options[option_index].name, "append") == 0);
660 assert(long_options[option_index].flag == 0);
662 /*************************/
663 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
666 assert(option_index == 4);
668 assert(optarg == argv[7]+9);
669 assert(optopt == 'g'); /* no changed */
670 assert(strcmp(long_options[option_index].name, "delete") == 0);
671 assert(long_options[option_index].flag == 0);
673 /*************************/
674 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
677 assert(option_index == 5);
679 assert(optarg == argv[8]+9);
680 assert(optopt == 'g'); /* no changed */
681 assert(strcmp(long_options[option_index].name, "create") == 0);
682 assert(long_options[option_index].flag == 0);
684 /*************************/
685 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
688 assert(option_index == 5);
689 assert(optind == 10);
691 assert(optopt == 'g'); /* no changed */
692 assert(strcmp(long_options[option_index].name, "create") == 0);
693 assert(long_options[option_index].flag == 0);
695 /*************************/
696 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
699 assert(option_index == 5); /* no changed */
700 assert(optind == 10);
702 assert(optopt == 'g'); /* no changed */
703 assert(strcmp(argv[optind], "files...") == 0);
714 argc++; *p++ = "command_name";
715 argc++; *p++ = "--delete"; /* required argument has no argument */
718 /*************************/
719 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
722 assert(option_index == 5); /* no changed */
723 assert(optind == 2); /* changed */
725 assert(optopt == 0); /* changed */
726 assert(argv[optind] == 0);
733 argc++; *p++ = "command_name";
734 argc++; *p++ = "--file"; /* not option */
737 /*************************/
738 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
741 assert(option_index == 5); /* no changed */
745 assert(argv[optind] == 0);
755 argc++; *p++ = "command_name";
761 argc++; *p++ = "-efg"; /* some options in a argument */
768 /*************************/
769 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
772 assert(strcmp(*p++, "command_name") == 0);
773 assert(strcmp(*p++, "-a") == 0);
774 assert(strcmp(*p++, "a1") == 0);
775 assert(strcmp(*p++, "a2") == 0);
776 assert(strcmp(*p++, "-b") == 0);
777 assert(strcmp(*p++, "b") == 0);
778 assert(strcmp(*p++, "-efg") == 0);
779 assert(strcmp(*p++, "g") == 0);
780 assert(strcmp(*p++, "-c") == 0);
781 assert(strcmp(*p++, "c") == 0);
782 assert(strcmp(*p++, "d") == 0);
786 assert(option_index == 5); /* no changed */
791 /*************************/
792 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
795 assert(strcmp(*p++, "command_name") == 0);
796 assert(strcmp(*p++, "-a") == 0);
797 assert(strcmp(*p++, "a1") == 0);
798 assert(strcmp(*p++, "a2") == 0);
799 assert(strcmp(*p++, "-b") == 0);
800 assert(strcmp(*p++, "b") == 0);
801 assert(strcmp(*p++, "-efg") == 0);
802 assert(strcmp(*p++, "g") == 0);
803 assert(strcmp(*p++, "-c") == 0);
804 assert(strcmp(*p++, "c") == 0);
805 assert(strcmp(*p++, "d") == 0);
809 assert(option_index == 5); /* no changed */
814 /*************************/
815 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
818 assert(strcmp(*p++, "command_name") == 0);
819 assert(strcmp(*p++, "-a") == 0);
820 assert(strcmp(*p++, "-b") == 0);
821 assert(strcmp(*p++, "a1") == 0);
822 assert(strcmp(*p++, "a2") == 0);
823 assert(strcmp(*p++, "b") == 0);
824 assert(strcmp(*p++, "-efg") == 0);
825 assert(strcmp(*p++, "g") == 0);
826 assert(strcmp(*p++, "-c") == 0);
827 assert(strcmp(*p++, "c") == 0);
828 assert(strcmp(*p++, "d") == 0);
832 assert(option_index == 5); /* no changed */
837 /*************************/
838 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
841 assert(strcmp(*p++, "command_name") == 0);
842 assert(strcmp(*p++, "-a") == 0);
843 assert(strcmp(*p++, "-b") == 0);
844 assert(strcmp(*p++, "a1") == 0);
845 assert(strcmp(*p++, "a2") == 0);
846 assert(strcmp(*p++, "b") == 0);
847 assert(strcmp(*p++, "-efg") == 0);
848 assert(strcmp(*p++, "g") == 0);
849 assert(strcmp(*p++, "-c") == 0);
850 assert(strcmp(*p++, "c") == 0);
851 assert(strcmp(*p++, "d") == 0);
855 assert(option_index == 5); /* no changed */
860 /*************************/
861 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
864 assert(strcmp(*p++, "command_name") == 0);
865 assert(strcmp(*p++, "-a") == 0);
866 assert(strcmp(*p++, "-b") == 0);
867 assert(strcmp(*p++, "a1") == 0);
868 assert(strcmp(*p++, "a2") == 0);
869 assert(strcmp(*p++, "b") == 0);
870 assert(strcmp(*p++, "-efg") == 0);
871 assert(strcmp(*p++, "g") == 0);
872 assert(strcmp(*p++, "-c") == 0);
873 assert(strcmp(*p++, "c") == 0);
874 assert(strcmp(*p++, "d") == 0);
878 assert(option_index == 5); /* no changed */
880 assert(optarg == argv[7]);
883 /*************************/
884 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
887 assert(strcmp(*p++, "command_name") == 0);
888 assert(strcmp(*p++, "-a") == 0);
889 assert(strcmp(*p++, "-b") == 0);
890 assert(strcmp(*p++, "-efg") == 0);
891 assert(strcmp(*p++, "g") == 0);
892 assert(strcmp(*p++, "a1") == 0);
893 assert(strcmp(*p++, "a2") == 0);
894 assert(strcmp(*p++, "b") == 0);
895 assert(strcmp(*p++, "-c") == 0);
896 assert(strcmp(*p++, "c") == 0);
897 assert(strcmp(*p++, "d") == 0);
901 assert(option_index == 5); /* no changed */
902 assert(optind == 10);
903 assert(optarg == argv[9]);
906 /*************************/
907 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
910 assert(strcmp(*p++, "command_name") == 0);
911 assert(strcmp(*p++, "-a") == 0);
912 assert(strcmp(*p++, "-b") == 0);
913 assert(strcmp(*p++, "-efg") == 0);
914 assert(strcmp(*p++, "g") == 0);
915 assert(strcmp(*p++, "-c") == 0);
916 assert(strcmp(*p++, "c") == 0);
917 assert(strcmp(*p++, "a1") == 0);
918 assert(strcmp(*p++, "a2") == 0);
919 assert(strcmp(*p++, "b") == 0);
920 assert(strcmp(*p++, "d") == 0);
924 assert(option_index == 5); /* no changed */
938 argc++; *p++ = "command_name";
944 /*************************/
945 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
948 assert(strcmp(*p++, "command_name") == 0);
949 assert(strcmp(*p++, "-a") == 0);
950 assert(strcmp(*p++, "-") == 0);
951 assert(strcmp(*p++, "-b") == 0);
955 assert(option_index == 5); /* no changed */
960 /*************************/
961 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
964 assert(strcmp(*p++, "command_name") == 0);
965 assert(strcmp(*p++, "-a") == 0);
966 assert(strcmp(*p++, "-") == 0);
967 assert(strcmp(*p++, "-b") == 0);
971 assert(option_index == 5); /* no changed */
976 /*************************/
977 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
980 assert(strcmp(*p++, "command_name") == 0);
981 assert(strcmp(*p++, "-a") == 0);
982 assert(strcmp(*p++, "-b") == 0);
983 assert(strcmp(*p++, "-") == 0);
987 assert(option_index == 5); /* no changed */
1000 argc++; *p++ = "command_name";
1001 argc++; *p++ = "-a";
1004 argc++; *p++ = "-b";
1007 /*************************/
1008 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1011 assert(strcmp(*p++, "command_name") == 0);
1012 assert(strcmp(*p++, "-a") == 0);
1013 assert(strcmp(*p++, "-") == 0);
1014 assert(strcmp(*p++, "-") == 0);
1015 assert(strcmp(*p++, "-b") == 0);
1019 assert(option_index == 5); /* no changed */
1020 assert(optind == 2);
1021 assert(optarg == 0);
1022 assert(optopt == 0);
1024 /*************************/
1025 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1028 assert(strcmp(*p++, "command_name") == 0);
1029 assert(strcmp(*p++, "-a") == 0);
1030 assert(strcmp(*p++, "-") == 0);
1031 assert(strcmp(*p++, "-") == 0);
1032 assert(strcmp(*p++, "-b") == 0);
1036 assert(option_index == 5); /* no changed */
1037 assert(optind == 5);
1038 assert(optarg == 0);
1039 assert(optopt == 0);
1041 /*************************/
1042 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1045 assert(strcmp(*p++, "command_name") == 0);
1046 assert(strcmp(*p++, "-a") == 0);
1047 assert(strcmp(*p++, "-b") == 0);
1048 assert(strcmp(*p++, "-") == 0);
1049 assert(strcmp(*p++, "-") == 0);
1053 assert(option_index == 5); /* no changed */
1054 assert(optind == 3);
1055 assert(optarg == 0);
1056 assert(optopt == 0);
1066 argc++; *p++ = "command_name";
1067 argc++; *p++ = "-a";
1070 argc++; *p++ = "-c";
1074 /*************************/
1075 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1078 assert(strcmp(*p++, "command_name") == 0);
1079 assert(strcmp(*p++, "-a") == 0);
1080 assert(strcmp(*p++, "-") == 0);
1081 assert(strcmp(*p++, "-") == 0);
1082 assert(strcmp(*p++, "-c") == 0);
1083 assert(strcmp(*p++, "c") == 0);
1087 assert(option_index == 5); /* no changed */
1088 assert(optind == 2);
1089 assert(optarg == 0);
1090 assert(optopt == 0);
1092 /*************************/
1093 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1096 assert(strcmp(*p++, "command_name") == 0);
1097 assert(strcmp(*p++, "-a") == 0);
1098 assert(strcmp(*p++, "-") == 0);
1099 assert(strcmp(*p++, "-") == 0);
1100 assert(strcmp(*p++, "-c") == 0);
1101 assert(strcmp(*p++, "c") == 0);
1105 assert(option_index == 5); /* no changed */
1106 assert(optind == 6);
1107 assert(optarg == argv[5]);
1108 assert(optopt == 0);
1110 /*************************/
1111 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1114 assert(strcmp(*p++, "command_name") == 0);
1115 assert(strcmp(*p++, "-a") == 0);
1116 assert(strcmp(*p++, "-c") == 0);
1117 assert(strcmp(*p++, "c") == 0);
1118 assert(strcmp(*p++, "-") == 0);
1119 assert(strcmp(*p++, "-") == 0);
1123 assert(option_index == 5); /* no changed */
1124 assert(optind == 4);
1125 assert(optarg == 0);
1126 assert(optopt == 0);
1136 argc++; *p++ = "command_name";
1137 argc++; *p++ = "-a";
1138 argc++; *p++ = "-c";
1140 argc++; *p++ = "--";
1141 argc++; *p++ = "-d";
1145 /*************************/
1146 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1149 assert(strcmp(*p++, "command_name") == 0);
1150 assert(strcmp(*p++, "-a") == 0);
1151 assert(strcmp(*p++, "-c") == 0);
1152 assert(strcmp(*p++, "c") == 0);
1153 assert(strcmp(*p++, "--") == 0);
1154 assert(strcmp(*p++, "-d") == 0);
1155 assert(strcmp(*p++, "d") == 0);
1159 assert(option_index == 5); /* no changed */
1160 assert(optind == 2);
1161 assert(optarg == 0);
1162 assert(optopt == 0);
1164 /*************************/
1165 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1168 assert(strcmp(*p++, "command_name") == 0);
1169 assert(strcmp(*p++, "-a") == 0);
1170 assert(strcmp(*p++, "-c") == 0);
1171 assert(strcmp(*p++, "c") == 0);
1172 assert(strcmp(*p++, "--") == 0);
1173 assert(strcmp(*p++, "-d") == 0);
1174 assert(strcmp(*p++, "d") == 0);
1178 assert(option_index == 5); /* no changed */
1179 assert(optind == 4);
1180 assert(optarg == argv[3]);
1181 assert(optopt == 0);
1183 /*************************/
1184 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1187 assert(strcmp(*p++, "command_name") == 0);
1188 assert(strcmp(*p++, "-a") == 0);
1189 assert(strcmp(*p++, "-c") == 0);
1190 assert(strcmp(*p++, "c") == 0);
1191 assert(strcmp(*p++, "--") == 0);
1192 assert(strcmp(*p++, "-d") == 0);
1193 assert(strcmp(*p++, "d") == 0);
1197 assert(option_index == 5); /* no changed */
1198 assert(optind == 5);
1199 assert(optarg == 0);
1200 assert(optopt == 0);
1202 /*************************/
1203 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1206 assert(strcmp(*p++, "command_name") == 0);
1207 assert(strcmp(*p++, "-a") == 0);
1208 assert(strcmp(*p++, "-c") == 0);
1209 assert(strcmp(*p++, "c") == 0);
1210 assert(strcmp(*p++, "--") == 0);
1211 assert(strcmp(*p++, "-d") == 0);
1212 assert(strcmp(*p++, "d") == 0);
1216 assert(option_index == 5); /* no changed */
1217 assert(optind == 7);
1218 assert(optarg == argv[6]);
1219 assert(optopt == 0);
1229 argc++; *p++ = "command_name";
1230 argc++; *p++ = "-a";
1233 argc++; *p++ = "-c";
1235 argc++; *p++ = "--";
1236 argc++; *p++ = "-d";
1240 /*************************/
1241 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1244 assert(strcmp(*p++, "command_name") == 0);
1245 assert(strcmp(*p++, "-a") == 0);
1246 assert(strcmp(*p++, "-") == 0);
1247 assert(strcmp(*p++, "-") == 0);
1248 assert(strcmp(*p++, "-c") == 0);
1249 assert(strcmp(*p++, "c") == 0);
1250 assert(strcmp(*p++, "--") == 0);
1251 assert(strcmp(*p++, "-d") == 0);
1252 assert(strcmp(*p++, "d") == 0);
1256 assert(option_index == 5); /* no changed */
1257 assert(optind == 2);
1258 assert(optarg == 0);
1259 assert(optopt == 0);
1261 /*************************/
1262 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1265 assert(strcmp(*p++, "command_name") == 0);
1266 assert(strcmp(*p++, "-a") == 0);
1267 assert(strcmp(*p++, "-") == 0);
1268 assert(strcmp(*p++, "-") == 0);
1269 assert(strcmp(*p++, "-c") == 0);
1270 assert(strcmp(*p++, "c") == 0);
1271 assert(strcmp(*p++, "--") == 0);
1272 assert(strcmp(*p++, "-d") == 0);
1273 assert(strcmp(*p++, "d") == 0);
1277 assert(option_index == 5); /* no changed */
1278 assert(optind == 6);
1279 assert(optarg == argv[5]);
1280 assert(optopt == 0);
1282 /*************************/
1283 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1286 assert(strcmp(*p++, "command_name") == 0);
1287 assert(strcmp(*p++, "-a") == 0);
1288 assert(strcmp(*p++, "-c") == 0);
1289 assert(strcmp(*p++, "c") == 0);
1290 assert(strcmp(*p++, "--") == 0);
1291 assert(strcmp(*p++, "-") == 0);
1292 assert(strcmp(*p++, "-") == 0);
1293 assert(strcmp(*p++, "-d") == 0);
1294 assert(strcmp(*p++, "d") == 0);
1298 assert(option_index == 5); /* no changed */
1299 assert(optind == 5);
1300 assert(optarg == 0);
1301 assert(optopt == 0);
1303 /*************************/
1304 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1307 assert(strcmp(*p++, "command_name") == 0);
1308 assert(strcmp(*p++, "-a") == 0);
1309 assert(strcmp(*p++, "-c") == 0);
1310 assert(strcmp(*p++, "c") == 0);
1311 assert(strcmp(*p++, "--") == 0);
1312 assert(strcmp(*p++, "-") == 0);
1313 assert(strcmp(*p++, "-") == 0);
1314 assert(strcmp(*p++, "-d") == 0);
1315 assert(strcmp(*p++, "d") == 0);
1319 assert(option_index == 5); /* no changed */
1320 assert(optind == 9);
1321 assert(optarg == argv[8]);
1322 assert(optopt == 0);
1332 argc++; *p++ = "command_name";
1333 argc++; *p++ = "-a";
1334 argc++; *p++ = "-cc";
1335 argc++; *p++ = "-d";
1337 argc++; *p++ = "-c"; /* no argument */
1338 argc++; *p++ = "-d"; /* at last */
1341 /*************************/
1342 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1345 assert(strcmp(*p++, "command_name") == 0);
1346 assert(strcmp(*p++, "-a") == 0);
1347 assert(strcmp(*p++, "-cc") == 0);
1348 assert(strcmp(*p++, "-d") == 0);
1349 assert(strcmp(*p++, "d") == 0);
1350 assert(strcmp(*p++, "-c") == 0);
1351 assert(strcmp(*p++, "-d") == 0);
1355 assert(option_index == 5); /* no changed */
1356 assert(optind == 2);
1357 assert(optarg == 0);
1358 assert(optopt == 0);
1360 /*************************/
1361 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1364 assert(strcmp(*p++, "command_name") == 0);
1365 assert(strcmp(*p++, "-a") == 0);
1366 assert(strcmp(*p++, "-cc") == 0);
1367 assert(strcmp(*p++, "-d") == 0);
1368 assert(strcmp(*p++, "d") == 0);
1369 assert(strcmp(*p++, "-c") == 0);
1370 assert(strcmp(*p++, "-d") == 0);
1374 assert(option_index == 5); /* no changed */
1375 assert(optind == 3);
1376 assert(optarg == argv[2]+2);
1377 assert(optopt == 0);
1379 /*************************/
1380 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1383 assert(strcmp(*p++, "command_name") == 0);
1384 assert(strcmp(*p++, "-a") == 0);
1385 assert(strcmp(*p++, "-cc") == 0);
1386 assert(strcmp(*p++, "-d") == 0);
1387 assert(strcmp(*p++, "d") == 0);
1388 assert(strcmp(*p++, "-c") == 0);
1389 assert(strcmp(*p++, "-d") == 0);
1393 assert(option_index == 5); /* no changed */
1394 assert(optind == 4);
1395 assert(optarg == 0);
1396 assert(optopt == 0);
1398 /*************************/
1399 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1402 assert(strcmp(*p++, "command_name") == 0);
1403 assert(strcmp(*p++, "-a") == 0);
1404 assert(strcmp(*p++, "-cc") == 0);
1405 assert(strcmp(*p++, "-d") == 0);
1406 assert(strcmp(*p++, "d") == 0);
1407 assert(strcmp(*p++, "-c") == 0);
1408 assert(strcmp(*p++, "-d") == 0);
1412 assert(option_index == 5); /* no changed */
1413 assert(optind == 6);
1414 assert(optarg == 0);
1415 assert(optopt == 0);
1417 /*************************/
1418 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1421 assert(strcmp(*p++, "command_name") == 0);
1422 assert(strcmp(*p++, "-a") == 0);
1423 assert(strcmp(*p++, "-cc") == 0);
1424 assert(strcmp(*p++, "-d") == 0);
1425 assert(strcmp(*p++, "-c") == 0);
1426 assert(strcmp(*p++, "d") == 0);
1427 assert(strcmp(*p++, "-d") == 0);
1431 assert(option_index == 5); /* no changed */
1432 assert(optind == 7);
1433 assert(optarg == 0);
1434 assert(optopt == 0);
1436 /*************************/
1437 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1440 assert(strcmp(*p++, "command_name") == 0);
1441 assert(strcmp(*p++, "-a") == 0);
1442 assert(strcmp(*p++, "-cc") == 0);
1443 assert(strcmp(*p++, "-d") == 0);
1444 assert(strcmp(*p++, "-c") == 0);
1445 assert(strcmp(*p++, "-d") == 0);
1446 assert(strcmp(*p++, "d") == 0);
1450 assert(option_index == 5); /* no changed */
1451 assert(optind == 6);
1452 assert(optarg == 0);
1453 assert(optopt == 0);
1463 argc++; *p++ = "command_name";
1464 argc++; *p++ = "--verbose";
1465 argc++; *p++ = "--create=c";
1466 argc++; *p++ = "--change";
1468 argc++; *p++ = "--create"; /* no argument */
1469 argc++; *p++ = "--change"; /* at last */
1472 /*************************/
1473 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1476 assert(strcmp(*p++, "command_name") == 0);
1477 assert(strcmp(*p++, "--verbose") == 0);
1478 assert(strcmp(*p++, "--create=c") == 0);
1479 assert(strcmp(*p++, "--change") == 0);
1480 assert(strcmp(*p++, "d") == 0);
1481 assert(strcmp(*p++, "--create") == 0);
1482 assert(strcmp(*p++, "--change") == 0);
1486 assert(option_index == 0);
1487 assert(optind == 2);
1488 assert(optarg == 0);
1489 assert(optopt == 0);
1491 /*************************/
1492 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1495 assert(strcmp(*p++, "command_name") == 0);
1496 assert(strcmp(*p++, "--verbose") == 0);
1497 assert(strcmp(*p++, "--create=c") == 0);
1498 assert(strcmp(*p++, "--change") == 0);
1499 assert(strcmp(*p++, "d") == 0);
1500 assert(strcmp(*p++, "--create") == 0);
1501 assert(strcmp(*p++, "--change") == 0);
1505 assert(option_index == 5);
1506 assert(optind == 3);
1507 assert(optarg == argv[2]+9);
1508 assert(optopt == 0);
1510 /*************************/
1511 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1514 assert(strcmp(*p++, "command_name") == 0);
1515 assert(strcmp(*p++, "--verbose") == 0);
1516 assert(strcmp(*p++, "--create=c") == 0);
1517 assert(strcmp(*p++, "--change") == 0);
1518 assert(strcmp(*p++, "d") == 0);
1519 assert(strcmp(*p++, "--create") == 0);
1520 assert(strcmp(*p++, "--change") == 0);
1524 assert(option_index == 6);
1525 assert(optind == 4);
1526 assert(optarg == 0);
1527 assert(optopt == 0);
1529 /*************************/
1530 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1533 assert(strcmp(*p++, "command_name") == 0);
1534 assert(strcmp(*p++, "--verbose") == 0);
1535 assert(strcmp(*p++, "--create=c") == 0);
1536 assert(strcmp(*p++, "--change") == 0);
1537 assert(strcmp(*p++, "d") == 0);
1538 assert(strcmp(*p++, "--create") == 0);
1539 assert(strcmp(*p++, "--change") == 0);
1543 assert(option_index == 5);
1544 assert(optind == 6);
1545 assert(optarg == 0);
1546 assert(optopt == 0);
1548 /*************************/
1549 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1552 assert(strcmp(*p++, "command_name") == 0);
1553 assert(strcmp(*p++, "--verbose") == 0);
1554 assert(strcmp(*p++, "--create=c") == 0);
1555 assert(strcmp(*p++, "--change") == 0);
1556 assert(strcmp(*p++, "--create") == 0);
1557 assert(strcmp(*p++, "d") == 0);
1558 assert(strcmp(*p++, "--change") == 0);
1562 assert(option_index == 6);
1563 assert(optind == 7);
1564 assert(optarg == 0);
1565 assert(optopt == 0);
1567 /*************************/
1568 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1571 assert(strcmp(*p++, "command_name") == 0);
1572 assert(strcmp(*p++, "--verbose") == 0);
1573 assert(strcmp(*p++, "--create=c") == 0);
1574 assert(strcmp(*p++, "--change") == 0);
1575 assert(strcmp(*p++, "--create") == 0);
1576 assert(strcmp(*p++, "--change") == 0);
1577 assert(strcmp(*p++, "d") == 0);
1581 assert(option_index == 6);
1582 assert(optind == 6);
1583 assert(optarg == 0);
1584 assert(optopt == 0);
1594 argc++; *p++ = "command_name";
1595 argc++; *p++ = "--verbose";
1596 argc++; *p++ = "--create=c";
1597 argc++; *p++ = "files...";
1598 argc++; *p++ = "--delete"; /* required argument */
1600 argc++; *p++ = "--create"; /* no argument */
1601 argc++; *p++ = "--change"; /* at last */
1604 /*************************/
1605 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1608 assert(strcmp(*p++, "command_name") == 0);
1609 assert(strcmp(*p++, "--verbose") == 0);
1610 assert(strcmp(*p++, "--create=c") == 0);
1611 assert(strcmp(*p++, "files...") == 0);
1612 assert(strcmp(*p++, "--delete") == 0);
1613 assert(strcmp(*p++, "d") == 0);
1614 assert(strcmp(*p++, "--create") == 0);
1615 assert(strcmp(*p++, "--change") == 0);
1619 assert(option_index == 0);
1620 assert(optind == 2);
1621 assert(optarg == 0);
1622 assert(optopt == 0);
1624 /*************************/
1625 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1628 assert(strcmp(*p++, "command_name") == 0);
1629 assert(strcmp(*p++, "--verbose") == 0);
1630 assert(strcmp(*p++, "--create=c") == 0);
1631 assert(strcmp(*p++, "files...") == 0);
1632 assert(strcmp(*p++, "--delete") == 0);
1633 assert(strcmp(*p++, "d") == 0);
1634 assert(strcmp(*p++, "--create") == 0);
1635 assert(strcmp(*p++, "--change") == 0);
1639 assert(option_index == 5);
1640 assert(optind == 3);
1641 assert(optarg == argv[2]+9);
1642 assert(optopt == 0);
1644 /*************************/
1645 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1648 assert(strcmp(*p++, "command_name") == 0);
1649 assert(strcmp(*p++, "--verbose") == 0);
1650 assert(strcmp(*p++, "--create=c") == 0);
1651 assert(strcmp(*p++, "files...") == 0);
1652 assert(strcmp(*p++, "--delete") == 0);
1653 assert(strcmp(*p++, "d") == 0);
1654 assert(strcmp(*p++, "--create") == 0);
1655 assert(strcmp(*p++, "--change") == 0);
1659 assert(option_index == 4);
1660 assert(optind == 6);
1661 assert(optarg == argv[5]);
1662 assert(optopt == 0);
1664 /*************************/
1665 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1668 assert(strcmp(*p++, "command_name") == 0);
1669 assert(strcmp(*p++, "--verbose") == 0);
1670 assert(strcmp(*p++, "--create=c") == 0);
1671 assert(strcmp(*p++, "--delete") == 0);
1672 assert(strcmp(*p++, "d") == 0);
1673 assert(strcmp(*p++, "files...") == 0);
1674 assert(strcmp(*p++, "--create") == 0);
1675 assert(strcmp(*p++, "--change") == 0);
1679 assert(option_index == 5);
1680 assert(optind == 7);
1681 assert(optarg == 0);
1682 assert(optopt == 0);
1684 /*************************/
1685 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1688 assert(strcmp(*p++, "command_name") == 0);
1689 assert(strcmp(*p++, "--verbose") == 0);
1690 assert(strcmp(*p++, "--create=c") == 0);
1691 assert(strcmp(*p++, "--delete") == 0);
1692 assert(strcmp(*p++, "d") == 0);
1693 assert(strcmp(*p++, "--create") == 0);
1694 assert(strcmp(*p++, "files...") == 0);
1695 assert(strcmp(*p++, "--change") == 0);
1699 assert(option_index == 6);
1700 assert(optind == 8);
1701 assert(optarg == 0);
1702 assert(optopt == 0);
1704 /*************************/
1705 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1708 assert(strcmp(*p++, "command_name") == 0);
1709 assert(strcmp(*p++, "--verbose") == 0);
1710 assert(strcmp(*p++, "--create=c") == 0);
1711 assert(strcmp(*p++, "--delete") == 0);
1712 assert(strcmp(*p++, "d") == 0);
1713 assert(strcmp(*p++, "--create") == 0);
1714 assert(strcmp(*p++, "--change") == 0);
1715 assert(strcmp(*p++, "files...") == 0);
1719 assert(option_index == 6);
1720 assert(optind == 7);
1721 assert(optarg == 0);
1722 assert(optopt == 0);
1732 argc++; *p++ = "command_name";
1733 argc++; *p++ = "--verbose";
1734 argc++; *p++ = "--create=c";
1735 argc++; *p++ = "files...";
1736 argc++; *p++ = "--delete";
1738 argc++; *p++ = "--"; /* option terminator */
1739 argc++; *p++ = "--change";
1742 /*************************/
1743 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1746 assert(strcmp(*p++, "command_name") == 0);
1747 assert(strcmp(*p++, "--verbose") == 0);
1748 assert(strcmp(*p++, "--create=c") == 0);
1749 assert(strcmp(*p++, "files...") == 0);
1750 assert(strcmp(*p++, "--delete") == 0);
1751 assert(strcmp(*p++, "d") == 0);
1752 assert(strcmp(*p++, "--") == 0);
1753 assert(strcmp(*p++, "--change") == 0);
1757 assert(option_index == 0);
1758 assert(optind == 2);
1759 assert(optarg == 0);
1760 assert(optopt == 0);
1762 /*************************/
1763 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1766 assert(strcmp(*p++, "command_name") == 0);
1767 assert(strcmp(*p++, "--verbose") == 0);
1768 assert(strcmp(*p++, "--create=c") == 0);
1769 assert(strcmp(*p++, "files...") == 0);
1770 assert(strcmp(*p++, "--delete") == 0);
1771 assert(strcmp(*p++, "d") == 0);
1772 assert(strcmp(*p++, "--") == 0);
1773 assert(strcmp(*p++, "--change") == 0);
1777 assert(option_index == 5);
1778 assert(optind == 3);
1779 assert(optarg == argv[2]+9);
1780 assert(optopt == 0);
1782 /*************************/
1783 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1786 assert(strcmp(*p++, "command_name") == 0);
1787 assert(strcmp(*p++, "--verbose") == 0);
1788 assert(strcmp(*p++, "--create=c") == 0);
1789 assert(strcmp(*p++, "files...") == 0);
1790 assert(strcmp(*p++, "--delete") == 0);
1791 assert(strcmp(*p++, "d") == 0);
1792 assert(strcmp(*p++, "--") == 0);
1793 assert(strcmp(*p++, "--change") == 0);
1797 assert(option_index == 4);
1798 assert(optind == 6);
1799 assert(optarg == argv[5]);
1800 assert(optopt == 0);
1802 /*************************/
1803 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1806 assert(strcmp(*p++, "command_name") == 0);
1807 assert(strcmp(*p++, "--verbose") == 0);
1808 assert(strcmp(*p++, "--create=c") == 0);
1809 assert(strcmp(*p++, "--delete") == 0);
1810 assert(strcmp(*p++, "d") == 0);
1811 assert(strcmp(*p++, "--") == 0);
1812 assert(strcmp(*p++, "files...") == 0);
1813 assert(strcmp(*p++, "--change") == 0);
1817 assert(option_index == 4);
1818 assert(optind == 6);
1819 assert(optarg == 0);
1820 assert(optopt == 0);
1831 argc++; *p++ = "command_name";
1832 argc++; *p++ = "-o5";
1833 argc++; *p++ = "files...";
1836 /*************************/
1837 c = call_getopt_long(argc, argv, "o[567]", long_options, &option_index);
1840 assert(strcmp(*p++, "command_name") == 0);
1841 assert(strcmp(*p++, "-o5") == 0);
1842 assert(strcmp(*p++, "files...") == 0);
1846 assert(option_index == 4); /* no changed */
1847 assert(optind == 2);
1848 assert(optarg == argv[1]+2);
1849 assert(optopt == 0);
1851 /*************************/
1852 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1855 assert(strcmp(*p++, "command_name") == 0);
1856 assert(strcmp(*p++, "-o5") == 0);
1857 assert(strcmp(*p++, "files...") == 0);
1861 assert(option_index == 4); /* no changed */
1862 assert(optind == 2);
1863 assert(optarg == 0);
1864 assert(optopt == 0);
1875 argc++; *p++ = "command_name";
1876 argc++; *p++ = "-a";
1877 argc++; *p++ = "-ccd";
1878 argc++; *p++ = "-ce";
1879 argc++; *p++ = "-d";
1881 argc++; *p++ = "-cdd";
1882 argc++; *p++ = "-d";
1885 /*************************/
1886 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1889 assert(strcmp(*p++, "command_name") == 0);
1890 assert(strcmp(*p++, "-a") == 0);
1891 assert(strcmp(*p++, "-ccd") == 0);
1892 assert(strcmp(*p++, "-ce") == 0);
1893 assert(strcmp(*p++, "-d") == 0);
1894 assert(strcmp(*p++, "d") == 0);
1895 assert(strcmp(*p++, "-cdd") == 0);
1896 assert(strcmp(*p++, "-d") == 0);
1900 assert(option_index == 4); /* no changed */
1901 assert(optind == 2);
1902 assert(optarg == 0);
1903 assert(optopt == 0);
1905 /*************************/
1906 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1909 assert(strcmp(*p++, "command_name") == 0);
1910 assert(strcmp(*p++, "-a") == 0);
1911 assert(strcmp(*p++, "-ccd") == 0);
1912 assert(strcmp(*p++, "-ce") == 0);
1913 assert(strcmp(*p++, "-d") == 0);
1914 assert(strcmp(*p++, "d") == 0);
1915 assert(strcmp(*p++, "-cdd") == 0);
1916 assert(strcmp(*p++, "-d") == 0);
1920 assert(option_index == 4); /* no changed */
1921 assert(optind == 2);
1922 assert(optarg == argv[2]+2);
1923 assert(optopt == 0);
1925 /*************************/
1926 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1929 assert(strcmp(*p++, "command_name") == 0);
1930 assert(strcmp(*p++, "-a") == 0);
1931 assert(strcmp(*p++, "-ccd") == 0);
1932 assert(strcmp(*p++, "-ce") == 0);
1933 assert(strcmp(*p++, "-d") == 0);
1934 assert(strcmp(*p++, "d") == 0);
1935 assert(strcmp(*p++, "-cdd") == 0);
1936 assert(strcmp(*p++, "-d") == 0);
1940 assert(option_index == 4); /* no changed */
1941 assert(optind == 3);
1942 assert(optarg == 0);
1943 assert(optopt == 0);
1945 /*************************/
1946 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1949 assert(strcmp(*p++, "command_name") == 0);
1950 assert(strcmp(*p++, "-a") == 0);
1951 assert(strcmp(*p++, "-ccd") == 0);
1952 assert(strcmp(*p++, "-ce") == 0);
1953 assert(strcmp(*p++, "-d") == 0);
1954 assert(strcmp(*p++, "d") == 0);
1955 assert(strcmp(*p++, "-cdd") == 0);
1956 assert(strcmp(*p++, "-d") == 0);
1960 assert(option_index == 4); /* no changed */
1961 assert(optind == 4);
1962 assert(optarg == argv[3]+2);
1963 assert(optopt == 0);
1965 /*************************/
1966 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1969 assert(strcmp(*p++, "command_name") == 0);
1970 assert(strcmp(*p++, "-a") == 0);
1971 assert(strcmp(*p++, "-ccd") == 0);
1972 assert(strcmp(*p++, "-ce") == 0);
1973 assert(strcmp(*p++, "-d") == 0);
1974 assert(strcmp(*p++, "d") == 0);
1975 assert(strcmp(*p++, "-cdd") == 0);
1976 assert(strcmp(*p++, "-d") == 0);
1980 assert(option_index == 4); /* no changed */
1981 assert(optind == 5);
1982 assert(optarg == 0);
1983 assert(optopt == 0);
1985 /*************************/
1986 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1989 assert(strcmp(*p++, "command_name") == 0);
1990 assert(strcmp(*p++, "-a") == 0);
1991 assert(strcmp(*p++, "-ccd") == 0);
1992 assert(strcmp(*p++, "-ce") == 0);
1993 assert(strcmp(*p++, "-d") == 0);
1994 assert(strcmp(*p++, "d") == 0);
1995 assert(strcmp(*p++, "-cdd") == 0);
1996 assert(strcmp(*p++, "-d") == 0);
2000 assert(option_index == 4); /* no changed */
2001 assert(optind == 6);
2002 assert(optarg == argv[6]+2);
2003 assert(optopt == 0);
2005 /*************************/
2006 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
2009 assert(strcmp(*p++, "command_name") == 0);
2010 assert(strcmp(*p++, "-a") == 0);
2011 assert(strcmp(*p++, "-ccd") == 0);
2012 assert(strcmp(*p++, "-ce") == 0);
2013 assert(strcmp(*p++, "-d") == 0);
2014 assert(strcmp(*p++, "d") == 0);
2015 assert(strcmp(*p++, "-cdd") == 0);
2016 assert(strcmp(*p++, "-d") == 0);
2020 assert(option_index == 4); /* no changed */
2021 assert(optind == 7);
2022 assert(optarg == 0);
2023 assert(optopt == 0);
2025 /*************************/
2026 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
2029 assert(strcmp(*p++, "command_name") == 0);
2030 assert(strcmp(*p++, "-a") == 0);
2031 assert(strcmp(*p++, "-ccd") == 0);
2032 assert(strcmp(*p++, "-ce") == 0);
2033 assert(strcmp(*p++, "-d") == 0);
2034 assert(strcmp(*p++, "-cdd") == 0);
2035 assert(strcmp(*p++, "d") == 0);
2036 assert(strcmp(*p++, "-d") == 0);
2040 assert(option_index == 4); /* no changed */
2041 assert(optind == 8);
2042 assert(optarg == 0);
2043 assert(optopt == 0);
2046 /*************************/
2047 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
2050 assert(strcmp(*p++, "command_name") == 0);
2051 assert(strcmp(*p++, "-a") == 0);
2052 assert(strcmp(*p++, "-ccd") == 0);
2053 assert(strcmp(*p++, "-ce") == 0);
2054 assert(strcmp(*p++, "-d") == 0);
2055 assert(strcmp(*p++, "-cdd") == 0);
2056 assert(strcmp(*p++, "-d") == 0);
2057 assert(strcmp(*p++, "d") == 0);
2061 assert(option_index == 4); /* no changed */
2062 assert(optind == 7);
2063 assert(optarg == 0);
2064 assert(optopt == 0);