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]);
314 if (shortoptind == 0 && is_option(opt) == 1) {
320 char *p = &opt[shortoptind];
325 switch (has_argument_short(p, shortopts)) {
331 if (opt[shortoptind] == '\0')
332 optind++, shortoptind = 0;
335 /* following character is argument */
336 optind++, shortoptind = 0;
340 /* next argv is argument */
341 optind++, shortoptind = 0;
342 optarg = argv[optind++];
345 /* has 1 byte argument */
348 optind++, shortoptind = 0;
356 "%s: invalid option -- %c\n",
360 optind++, shortoptind = 0;
365 else if (opt[0] == '-' && opt[1] == '-') {
368 if (opt[2] == '\0') {
369 /* end of command line switch */
376 i = search_longopt(opt, longopts);
383 int len = strlen(opt);
384 char *p = strchr(opt, '=');
389 switch (longopts[i].has_arg) {
392 case required_argument:
394 optarg = opt + len + 1;
397 optarg = argv[optind];
401 "%s: option `--%s' requires an argument\n",
406 return '?'; /* no argument */
410 case optional_argument:
412 optarg = opt + len + 1;
423 if (longopts[i].flag) {
424 *longopts[i].flag = longopts[i].val;
428 return longopts[i].val;
441 for (i = optind; argv[i]; i++) {
442 if (is_option(argv[i])) {
465 #include <getopt.h> /* use GNU getopt_long() */
468 static int verbose_flag;
469 static int option_index;
474 static struct option long_options[] = {
475 {"verbose", no_argument, &verbose_flag, 1},
476 {"brief", no_argument, &verbose_flag, 0},
477 {"add", required_argument, 0, 'a'},
478 {"append", no_argument, 0, 0},
479 {"delete", required_argument, 0, 0},
480 {"create", optional_argument, 0, 0},
481 {"change", optional_argument, 0, 0},
486 call_getopt_long(int argc, char **argv,
487 const char *shortopts,
488 struct option *longopts,
492 c = getopt_long(argc, argv, shortopts, longopts, indexptr);
494 printf("ret=%d(%c) option_index=%d ", c, c, option_index);
495 printf("optind=%d optarg=[%s] opterr=%d optopt=%d(%c)\n",
496 optind, optarg, opterr, optopt, optopt);
499 opt = &longopts[*indexptr];
500 printf("long option: --%s has_arg=%d\n", opt->name, opt->has_arg);
502 printf(" flag=[%8p] val=%d\n", opt->flag, *opt->flag);
515 argc++; *p++ = "command_name";
517 argc++; *p++ = "-bcd";
524 /*************************/
525 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
528 assert(option_index == 0);
533 /*************************/
534 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
537 assert(option_index == 0);
542 /*************************/
543 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
546 assert(option_index == 0);
548 assert(optarg == &argv[2][3]);
551 /*************************/
552 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
555 assert(option_index == 0);
557 assert(optarg == argv[4]);
560 /*************************/
561 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
564 assert(option_index == 0);
567 assert(optopt == 'f');
569 /*************************/
570 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
573 assert(option_index == 0);
576 assert(optopt == 'g');
578 /*************************/
579 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
582 assert(option_index == 0);
585 assert(optopt == 'g'); /* no changed */
595 argc++; *p++ = "command_name";
596 argc++; *p++ = "--verbose";
597 argc++; *p++ = "--brief";
598 argc++; *p++ = "--add";
599 argc++; *p++ = "add_argument";
600 argc++; *p++ = "--add=add_argument";
601 argc++; *p++ = "--append";
602 argc++; *p++ = "--delete=del_argument";
603 argc++; *p++ = "--create=cre_argument";
604 argc++; *p++ = "--create";
605 argc++; *p++ = "files...";
608 /*************************/
609 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
612 assert(option_index == 0);
615 assert(optopt == 'g'); /* no changed */
616 assert(strcmp(long_options[option_index].name, "verbose") == 0);
617 assert(*long_options[option_index].flag == 1);
619 /*************************/
620 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
623 assert(option_index == 1);
626 assert(optopt == 'g'); /* no changed */
627 assert(strcmp(long_options[option_index].name, "brief") == 0);
628 assert(*long_options[option_index].flag == 0);
630 /*************************/
631 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
634 assert(option_index == 2);
636 assert(optarg == argv[4]);
637 assert(optopt == 'g'); /* no changed */
638 assert(strcmp(long_options[option_index].name, "add") == 0);
639 assert(long_options[option_index].flag == 0);
641 /*************************/
642 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
645 assert(option_index == 2);
647 assert(optarg == argv[5]+6);
648 assert(optopt == 'g'); /* no changed */
649 assert(strcmp(long_options[option_index].name, "add") == 0);
650 assert(long_options[option_index].flag == 0);
652 /*************************/
653 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
656 assert(option_index == 3);
659 assert(optopt == 'g'); /* no changed */
660 assert(strcmp(long_options[option_index].name, "append") == 0);
661 assert(long_options[option_index].flag == 0);
663 /*************************/
664 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
667 assert(option_index == 4);
669 assert(optarg == argv[7]+9);
670 assert(optopt == 'g'); /* no changed */
671 assert(strcmp(long_options[option_index].name, "delete") == 0);
672 assert(long_options[option_index].flag == 0);
674 /*************************/
675 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
678 assert(option_index == 5);
680 assert(optarg == argv[8]+9);
681 assert(optopt == 'g'); /* no changed */
682 assert(strcmp(long_options[option_index].name, "create") == 0);
683 assert(long_options[option_index].flag == 0);
685 /*************************/
686 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
689 assert(option_index == 5);
690 assert(optind == 10);
692 assert(optopt == 'g'); /* no changed */
693 assert(strcmp(long_options[option_index].name, "create") == 0);
694 assert(long_options[option_index].flag == 0);
696 /*************************/
697 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
700 assert(option_index == 5); /* no changed */
701 assert(optind == 10);
703 assert(optopt == 'g'); /* no changed */
704 assert(strcmp(argv[optind], "files...") == 0);
715 argc++; *p++ = "command_name";
716 argc++; *p++ = "--delete"; /* required argument has no argument */
719 /*************************/
720 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
723 assert(option_index == 5); /* no changed */
724 assert(optind == 2); /* changed */
726 assert(optopt == 0); /* changed */
727 assert(argv[optind] == 0);
734 argc++; *p++ = "command_name";
735 argc++; *p++ = "--file"; /* not option */
738 /*************************/
739 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
742 assert(option_index == 5); /* no changed */
746 assert(argv[optind] == 0);
756 argc++; *p++ = "command_name";
762 argc++; *p++ = "-efg"; /* some options in a argument */
769 /*************************/
770 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
773 assert(strcmp(*p++, "command_name") == 0);
774 assert(strcmp(*p++, "-a") == 0);
775 assert(strcmp(*p++, "a1") == 0);
776 assert(strcmp(*p++, "a2") == 0);
777 assert(strcmp(*p++, "-b") == 0);
778 assert(strcmp(*p++, "b") == 0);
779 assert(strcmp(*p++, "-efg") == 0);
780 assert(strcmp(*p++, "g") == 0);
781 assert(strcmp(*p++, "-c") == 0);
782 assert(strcmp(*p++, "c") == 0);
783 assert(strcmp(*p++, "d") == 0);
787 assert(option_index == 5); /* no changed */
792 /*************************/
793 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
796 assert(strcmp(*p++, "command_name") == 0);
797 assert(strcmp(*p++, "-a") == 0);
798 assert(strcmp(*p++, "a1") == 0);
799 assert(strcmp(*p++, "a2") == 0);
800 assert(strcmp(*p++, "-b") == 0);
801 assert(strcmp(*p++, "b") == 0);
802 assert(strcmp(*p++, "-efg") == 0);
803 assert(strcmp(*p++, "g") == 0);
804 assert(strcmp(*p++, "-c") == 0);
805 assert(strcmp(*p++, "c") == 0);
806 assert(strcmp(*p++, "d") == 0);
810 assert(option_index == 5); /* no changed */
815 /*************************/
816 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
819 assert(strcmp(*p++, "command_name") == 0);
820 assert(strcmp(*p++, "-a") == 0);
821 assert(strcmp(*p++, "-b") == 0);
822 assert(strcmp(*p++, "a1") == 0);
823 assert(strcmp(*p++, "a2") == 0);
824 assert(strcmp(*p++, "b") == 0);
825 assert(strcmp(*p++, "-efg") == 0);
826 assert(strcmp(*p++, "g") == 0);
827 assert(strcmp(*p++, "-c") == 0);
828 assert(strcmp(*p++, "c") == 0);
829 assert(strcmp(*p++, "d") == 0);
833 assert(option_index == 5); /* no changed */
838 /*************************/
839 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
842 assert(strcmp(*p++, "command_name") == 0);
843 assert(strcmp(*p++, "-a") == 0);
844 assert(strcmp(*p++, "-b") == 0);
845 assert(strcmp(*p++, "a1") == 0);
846 assert(strcmp(*p++, "a2") == 0);
847 assert(strcmp(*p++, "b") == 0);
848 assert(strcmp(*p++, "-efg") == 0);
849 assert(strcmp(*p++, "g") == 0);
850 assert(strcmp(*p++, "-c") == 0);
851 assert(strcmp(*p++, "c") == 0);
852 assert(strcmp(*p++, "d") == 0);
856 assert(option_index == 5); /* no changed */
861 /*************************/
862 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
865 assert(strcmp(*p++, "command_name") == 0);
866 assert(strcmp(*p++, "-a") == 0);
867 assert(strcmp(*p++, "-b") == 0);
868 assert(strcmp(*p++, "a1") == 0);
869 assert(strcmp(*p++, "a2") == 0);
870 assert(strcmp(*p++, "b") == 0);
871 assert(strcmp(*p++, "-efg") == 0);
872 assert(strcmp(*p++, "g") == 0);
873 assert(strcmp(*p++, "-c") == 0);
874 assert(strcmp(*p++, "c") == 0);
875 assert(strcmp(*p++, "d") == 0);
879 assert(option_index == 5); /* no changed */
881 assert(optarg == argv[7]);
884 /*************************/
885 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
888 assert(strcmp(*p++, "command_name") == 0);
889 assert(strcmp(*p++, "-a") == 0);
890 assert(strcmp(*p++, "-b") == 0);
891 assert(strcmp(*p++, "-efg") == 0);
892 assert(strcmp(*p++, "g") == 0);
893 assert(strcmp(*p++, "a1") == 0);
894 assert(strcmp(*p++, "a2") == 0);
895 assert(strcmp(*p++, "b") == 0);
896 assert(strcmp(*p++, "-c") == 0);
897 assert(strcmp(*p++, "c") == 0);
898 assert(strcmp(*p++, "d") == 0);
902 assert(option_index == 5); /* no changed */
903 assert(optind == 10);
904 assert(optarg == argv[9]);
907 /*************************/
908 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
911 assert(strcmp(*p++, "command_name") == 0);
912 assert(strcmp(*p++, "-a") == 0);
913 assert(strcmp(*p++, "-b") == 0);
914 assert(strcmp(*p++, "-efg") == 0);
915 assert(strcmp(*p++, "g") == 0);
916 assert(strcmp(*p++, "-c") == 0);
917 assert(strcmp(*p++, "c") == 0);
918 assert(strcmp(*p++, "a1") == 0);
919 assert(strcmp(*p++, "a2") == 0);
920 assert(strcmp(*p++, "b") == 0);
921 assert(strcmp(*p++, "d") == 0);
925 assert(option_index == 5); /* no changed */
939 argc++; *p++ = "command_name";
945 /*************************/
946 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
949 assert(strcmp(*p++, "command_name") == 0);
950 assert(strcmp(*p++, "-a") == 0);
951 assert(strcmp(*p++, "-") == 0);
952 assert(strcmp(*p++, "-b") == 0);
956 assert(option_index == 5); /* no changed */
961 /*************************/
962 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
965 assert(strcmp(*p++, "command_name") == 0);
966 assert(strcmp(*p++, "-a") == 0);
967 assert(strcmp(*p++, "-") == 0);
968 assert(strcmp(*p++, "-b") == 0);
972 assert(option_index == 5); /* no changed */
977 /*************************/
978 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
981 assert(strcmp(*p++, "command_name") == 0);
982 assert(strcmp(*p++, "-a") == 0);
983 assert(strcmp(*p++, "-b") == 0);
984 assert(strcmp(*p++, "-") == 0);
988 assert(option_index == 5); /* no changed */
1001 argc++; *p++ = "command_name";
1002 argc++; *p++ = "-a";
1005 argc++; *p++ = "-b";
1008 /*************************/
1009 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1012 assert(strcmp(*p++, "command_name") == 0);
1013 assert(strcmp(*p++, "-a") == 0);
1014 assert(strcmp(*p++, "-") == 0);
1015 assert(strcmp(*p++, "-") == 0);
1016 assert(strcmp(*p++, "-b") == 0);
1020 assert(option_index == 5); /* no changed */
1021 assert(optind == 2);
1022 assert(optarg == 0);
1023 assert(optopt == 0);
1025 /*************************/
1026 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1029 assert(strcmp(*p++, "command_name") == 0);
1030 assert(strcmp(*p++, "-a") == 0);
1031 assert(strcmp(*p++, "-") == 0);
1032 assert(strcmp(*p++, "-") == 0);
1033 assert(strcmp(*p++, "-b") == 0);
1037 assert(option_index == 5); /* no changed */
1038 assert(optind == 5);
1039 assert(optarg == 0);
1040 assert(optopt == 0);
1042 /*************************/
1043 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1046 assert(strcmp(*p++, "command_name") == 0);
1047 assert(strcmp(*p++, "-a") == 0);
1048 assert(strcmp(*p++, "-b") == 0);
1049 assert(strcmp(*p++, "-") == 0);
1050 assert(strcmp(*p++, "-") == 0);
1054 assert(option_index == 5); /* no changed */
1055 assert(optind == 3);
1056 assert(optarg == 0);
1057 assert(optopt == 0);
1067 argc++; *p++ = "command_name";
1068 argc++; *p++ = "-a";
1071 argc++; *p++ = "-c";
1075 /*************************/
1076 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1079 assert(strcmp(*p++, "command_name") == 0);
1080 assert(strcmp(*p++, "-a") == 0);
1081 assert(strcmp(*p++, "-") == 0);
1082 assert(strcmp(*p++, "-") == 0);
1083 assert(strcmp(*p++, "-c") == 0);
1084 assert(strcmp(*p++, "c") == 0);
1088 assert(option_index == 5); /* no changed */
1089 assert(optind == 2);
1090 assert(optarg == 0);
1091 assert(optopt == 0);
1093 /*************************/
1094 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1097 assert(strcmp(*p++, "command_name") == 0);
1098 assert(strcmp(*p++, "-a") == 0);
1099 assert(strcmp(*p++, "-") == 0);
1100 assert(strcmp(*p++, "-") == 0);
1101 assert(strcmp(*p++, "-c") == 0);
1102 assert(strcmp(*p++, "c") == 0);
1106 assert(option_index == 5); /* no changed */
1107 assert(optind == 6);
1108 assert(optarg == argv[5]);
1109 assert(optopt == 0);
1111 /*************************/
1112 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1115 assert(strcmp(*p++, "command_name") == 0);
1116 assert(strcmp(*p++, "-a") == 0);
1117 assert(strcmp(*p++, "-c") == 0);
1118 assert(strcmp(*p++, "c") == 0);
1119 assert(strcmp(*p++, "-") == 0);
1120 assert(strcmp(*p++, "-") == 0);
1124 assert(option_index == 5); /* no changed */
1125 assert(optind == 4);
1126 assert(optarg == 0);
1127 assert(optopt == 0);
1137 argc++; *p++ = "command_name";
1138 argc++; *p++ = "-a";
1139 argc++; *p++ = "-c";
1141 argc++; *p++ = "--";
1142 argc++; *p++ = "-d";
1146 /*************************/
1147 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1150 assert(strcmp(*p++, "command_name") == 0);
1151 assert(strcmp(*p++, "-a") == 0);
1152 assert(strcmp(*p++, "-c") == 0);
1153 assert(strcmp(*p++, "c") == 0);
1154 assert(strcmp(*p++, "--") == 0);
1155 assert(strcmp(*p++, "-d") == 0);
1156 assert(strcmp(*p++, "d") == 0);
1160 assert(option_index == 5); /* no changed */
1161 assert(optind == 2);
1162 assert(optarg == 0);
1163 assert(optopt == 0);
1165 /*************************/
1166 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1169 assert(strcmp(*p++, "command_name") == 0);
1170 assert(strcmp(*p++, "-a") == 0);
1171 assert(strcmp(*p++, "-c") == 0);
1172 assert(strcmp(*p++, "c") == 0);
1173 assert(strcmp(*p++, "--") == 0);
1174 assert(strcmp(*p++, "-d") == 0);
1175 assert(strcmp(*p++, "d") == 0);
1179 assert(option_index == 5); /* no changed */
1180 assert(optind == 4);
1181 assert(optarg == argv[3]);
1182 assert(optopt == 0);
1184 /*************************/
1185 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1188 assert(strcmp(*p++, "command_name") == 0);
1189 assert(strcmp(*p++, "-a") == 0);
1190 assert(strcmp(*p++, "-c") == 0);
1191 assert(strcmp(*p++, "c") == 0);
1192 assert(strcmp(*p++, "--") == 0);
1193 assert(strcmp(*p++, "-d") == 0);
1194 assert(strcmp(*p++, "d") == 0);
1198 assert(option_index == 5); /* no changed */
1199 assert(optind == 5);
1200 assert(optarg == 0);
1201 assert(optopt == 0);
1203 /*************************/
1204 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1207 assert(strcmp(*p++, "command_name") == 0);
1208 assert(strcmp(*p++, "-a") == 0);
1209 assert(strcmp(*p++, "-c") == 0);
1210 assert(strcmp(*p++, "c") == 0);
1211 assert(strcmp(*p++, "--") == 0);
1212 assert(strcmp(*p++, "-d") == 0);
1213 assert(strcmp(*p++, "d") == 0);
1217 assert(option_index == 5); /* no changed */
1218 assert(optind == 7);
1219 assert(optarg == argv[6]);
1220 assert(optopt == 0);
1230 argc++; *p++ = "command_name";
1231 argc++; *p++ = "-a";
1234 argc++; *p++ = "-c";
1236 argc++; *p++ = "--";
1237 argc++; *p++ = "-d";
1241 /*************************/
1242 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1245 assert(strcmp(*p++, "command_name") == 0);
1246 assert(strcmp(*p++, "-a") == 0);
1247 assert(strcmp(*p++, "-") == 0);
1248 assert(strcmp(*p++, "-") == 0);
1249 assert(strcmp(*p++, "-c") == 0);
1250 assert(strcmp(*p++, "c") == 0);
1251 assert(strcmp(*p++, "--") == 0);
1252 assert(strcmp(*p++, "-d") == 0);
1253 assert(strcmp(*p++, "d") == 0);
1257 assert(option_index == 5); /* no changed */
1258 assert(optind == 2);
1259 assert(optarg == 0);
1260 assert(optopt == 0);
1262 /*************************/
1263 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1266 assert(strcmp(*p++, "command_name") == 0);
1267 assert(strcmp(*p++, "-a") == 0);
1268 assert(strcmp(*p++, "-") == 0);
1269 assert(strcmp(*p++, "-") == 0);
1270 assert(strcmp(*p++, "-c") == 0);
1271 assert(strcmp(*p++, "c") == 0);
1272 assert(strcmp(*p++, "--") == 0);
1273 assert(strcmp(*p++, "-d") == 0);
1274 assert(strcmp(*p++, "d") == 0);
1278 assert(option_index == 5); /* no changed */
1279 assert(optind == 6);
1280 assert(optarg == argv[5]);
1281 assert(optopt == 0);
1283 /*************************/
1284 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1287 assert(strcmp(*p++, "command_name") == 0);
1288 assert(strcmp(*p++, "-a") == 0);
1289 assert(strcmp(*p++, "-c") == 0);
1290 assert(strcmp(*p++, "c") == 0);
1291 assert(strcmp(*p++, "--") == 0);
1292 assert(strcmp(*p++, "-") == 0);
1293 assert(strcmp(*p++, "-") == 0);
1294 assert(strcmp(*p++, "-d") == 0);
1295 assert(strcmp(*p++, "d") == 0);
1299 assert(option_index == 5); /* no changed */
1300 assert(optind == 5);
1301 assert(optarg == 0);
1302 assert(optopt == 0);
1304 /*************************/
1305 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1308 assert(strcmp(*p++, "command_name") == 0);
1309 assert(strcmp(*p++, "-a") == 0);
1310 assert(strcmp(*p++, "-c") == 0);
1311 assert(strcmp(*p++, "c") == 0);
1312 assert(strcmp(*p++, "--") == 0);
1313 assert(strcmp(*p++, "-") == 0);
1314 assert(strcmp(*p++, "-") == 0);
1315 assert(strcmp(*p++, "-d") == 0);
1316 assert(strcmp(*p++, "d") == 0);
1320 assert(option_index == 5); /* no changed */
1321 assert(optind == 9);
1322 assert(optarg == argv[8]);
1323 assert(optopt == 0);
1333 argc++; *p++ = "command_name";
1334 argc++; *p++ = "-a";
1335 argc++; *p++ = "-cc";
1336 argc++; *p++ = "-d";
1338 argc++; *p++ = "-c"; /* no argument */
1339 argc++; *p++ = "-d"; /* at last */
1342 /*************************/
1343 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1346 assert(strcmp(*p++, "command_name") == 0);
1347 assert(strcmp(*p++, "-a") == 0);
1348 assert(strcmp(*p++, "-cc") == 0);
1349 assert(strcmp(*p++, "-d") == 0);
1350 assert(strcmp(*p++, "d") == 0);
1351 assert(strcmp(*p++, "-c") == 0);
1352 assert(strcmp(*p++, "-d") == 0);
1356 assert(option_index == 5); /* no changed */
1357 assert(optind == 2);
1358 assert(optarg == 0);
1359 assert(optopt == 0);
1361 /*************************/
1362 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1365 assert(strcmp(*p++, "command_name") == 0);
1366 assert(strcmp(*p++, "-a") == 0);
1367 assert(strcmp(*p++, "-cc") == 0);
1368 assert(strcmp(*p++, "-d") == 0);
1369 assert(strcmp(*p++, "d") == 0);
1370 assert(strcmp(*p++, "-c") == 0);
1371 assert(strcmp(*p++, "-d") == 0);
1375 assert(option_index == 5); /* no changed */
1376 assert(optind == 3);
1377 assert(optarg == argv[2]+2);
1378 assert(optopt == 0);
1380 /*************************/
1381 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1384 assert(strcmp(*p++, "command_name") == 0);
1385 assert(strcmp(*p++, "-a") == 0);
1386 assert(strcmp(*p++, "-cc") == 0);
1387 assert(strcmp(*p++, "-d") == 0);
1388 assert(strcmp(*p++, "d") == 0);
1389 assert(strcmp(*p++, "-c") == 0);
1390 assert(strcmp(*p++, "-d") == 0);
1394 assert(option_index == 5); /* no changed */
1395 assert(optind == 4);
1396 assert(optarg == 0);
1397 assert(optopt == 0);
1399 /*************************/
1400 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1403 assert(strcmp(*p++, "command_name") == 0);
1404 assert(strcmp(*p++, "-a") == 0);
1405 assert(strcmp(*p++, "-cc") == 0);
1406 assert(strcmp(*p++, "-d") == 0);
1407 assert(strcmp(*p++, "d") == 0);
1408 assert(strcmp(*p++, "-c") == 0);
1409 assert(strcmp(*p++, "-d") == 0);
1413 assert(option_index == 5); /* no changed */
1414 assert(optind == 6);
1415 assert(optarg == 0);
1416 assert(optopt == 0);
1418 /*************************/
1419 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1422 assert(strcmp(*p++, "command_name") == 0);
1423 assert(strcmp(*p++, "-a") == 0);
1424 assert(strcmp(*p++, "-cc") == 0);
1425 assert(strcmp(*p++, "-d") == 0);
1426 assert(strcmp(*p++, "-c") == 0);
1427 assert(strcmp(*p++, "d") == 0);
1428 assert(strcmp(*p++, "-d") == 0);
1432 assert(option_index == 5); /* no changed */
1433 assert(optind == 7);
1434 assert(optarg == 0);
1435 assert(optopt == 0);
1437 /*************************/
1438 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1441 assert(strcmp(*p++, "command_name") == 0);
1442 assert(strcmp(*p++, "-a") == 0);
1443 assert(strcmp(*p++, "-cc") == 0);
1444 assert(strcmp(*p++, "-d") == 0);
1445 assert(strcmp(*p++, "-c") == 0);
1446 assert(strcmp(*p++, "-d") == 0);
1447 assert(strcmp(*p++, "d") == 0);
1451 assert(option_index == 5); /* no changed */
1452 assert(optind == 6);
1453 assert(optarg == 0);
1454 assert(optopt == 0);
1464 argc++; *p++ = "command_name";
1465 argc++; *p++ = "--verbose";
1466 argc++; *p++ = "--create=c";
1467 argc++; *p++ = "--change";
1469 argc++; *p++ = "--create"; /* no argument */
1470 argc++; *p++ = "--change"; /* at last */
1473 /*************************/
1474 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1477 assert(strcmp(*p++, "command_name") == 0);
1478 assert(strcmp(*p++, "--verbose") == 0);
1479 assert(strcmp(*p++, "--create=c") == 0);
1480 assert(strcmp(*p++, "--change") == 0);
1481 assert(strcmp(*p++, "d") == 0);
1482 assert(strcmp(*p++, "--create") == 0);
1483 assert(strcmp(*p++, "--change") == 0);
1487 assert(option_index == 0);
1488 assert(optind == 2);
1489 assert(optarg == 0);
1490 assert(optopt == 0);
1492 /*************************/
1493 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1496 assert(strcmp(*p++, "command_name") == 0);
1497 assert(strcmp(*p++, "--verbose") == 0);
1498 assert(strcmp(*p++, "--create=c") == 0);
1499 assert(strcmp(*p++, "--change") == 0);
1500 assert(strcmp(*p++, "d") == 0);
1501 assert(strcmp(*p++, "--create") == 0);
1502 assert(strcmp(*p++, "--change") == 0);
1506 assert(option_index == 5);
1507 assert(optind == 3);
1508 assert(optarg == argv[2]+9);
1509 assert(optopt == 0);
1511 /*************************/
1512 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1515 assert(strcmp(*p++, "command_name") == 0);
1516 assert(strcmp(*p++, "--verbose") == 0);
1517 assert(strcmp(*p++, "--create=c") == 0);
1518 assert(strcmp(*p++, "--change") == 0);
1519 assert(strcmp(*p++, "d") == 0);
1520 assert(strcmp(*p++, "--create") == 0);
1521 assert(strcmp(*p++, "--change") == 0);
1525 assert(option_index == 6);
1526 assert(optind == 4);
1527 assert(optarg == 0);
1528 assert(optopt == 0);
1530 /*************************/
1531 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1534 assert(strcmp(*p++, "command_name") == 0);
1535 assert(strcmp(*p++, "--verbose") == 0);
1536 assert(strcmp(*p++, "--create=c") == 0);
1537 assert(strcmp(*p++, "--change") == 0);
1538 assert(strcmp(*p++, "d") == 0);
1539 assert(strcmp(*p++, "--create") == 0);
1540 assert(strcmp(*p++, "--change") == 0);
1544 assert(option_index == 5);
1545 assert(optind == 6);
1546 assert(optarg == 0);
1547 assert(optopt == 0);
1549 /*************************/
1550 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1553 assert(strcmp(*p++, "command_name") == 0);
1554 assert(strcmp(*p++, "--verbose") == 0);
1555 assert(strcmp(*p++, "--create=c") == 0);
1556 assert(strcmp(*p++, "--change") == 0);
1557 assert(strcmp(*p++, "--create") == 0);
1558 assert(strcmp(*p++, "d") == 0);
1559 assert(strcmp(*p++, "--change") == 0);
1563 assert(option_index == 6);
1564 assert(optind == 7);
1565 assert(optarg == 0);
1566 assert(optopt == 0);
1568 /*************************/
1569 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1572 assert(strcmp(*p++, "command_name") == 0);
1573 assert(strcmp(*p++, "--verbose") == 0);
1574 assert(strcmp(*p++, "--create=c") == 0);
1575 assert(strcmp(*p++, "--change") == 0);
1576 assert(strcmp(*p++, "--create") == 0);
1577 assert(strcmp(*p++, "--change") == 0);
1578 assert(strcmp(*p++, "d") == 0);
1582 assert(option_index == 6);
1583 assert(optind == 6);
1584 assert(optarg == 0);
1585 assert(optopt == 0);
1595 argc++; *p++ = "command_name";
1596 argc++; *p++ = "--verbose";
1597 argc++; *p++ = "--create=c";
1598 argc++; *p++ = "files...";
1599 argc++; *p++ = "--delete"; /* required argument */
1601 argc++; *p++ = "--create"; /* no argument */
1602 argc++; *p++ = "--change"; /* at last */
1605 /*************************/
1606 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1609 assert(strcmp(*p++, "command_name") == 0);
1610 assert(strcmp(*p++, "--verbose") == 0);
1611 assert(strcmp(*p++, "--create=c") == 0);
1612 assert(strcmp(*p++, "files...") == 0);
1613 assert(strcmp(*p++, "--delete") == 0);
1614 assert(strcmp(*p++, "d") == 0);
1615 assert(strcmp(*p++, "--create") == 0);
1616 assert(strcmp(*p++, "--change") == 0);
1620 assert(option_index == 0);
1621 assert(optind == 2);
1622 assert(optarg == 0);
1623 assert(optopt == 0);
1625 /*************************/
1626 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1629 assert(strcmp(*p++, "command_name") == 0);
1630 assert(strcmp(*p++, "--verbose") == 0);
1631 assert(strcmp(*p++, "--create=c") == 0);
1632 assert(strcmp(*p++, "files...") == 0);
1633 assert(strcmp(*p++, "--delete") == 0);
1634 assert(strcmp(*p++, "d") == 0);
1635 assert(strcmp(*p++, "--create") == 0);
1636 assert(strcmp(*p++, "--change") == 0);
1640 assert(option_index == 5);
1641 assert(optind == 3);
1642 assert(optarg == argv[2]+9);
1643 assert(optopt == 0);
1645 /*************************/
1646 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1649 assert(strcmp(*p++, "command_name") == 0);
1650 assert(strcmp(*p++, "--verbose") == 0);
1651 assert(strcmp(*p++, "--create=c") == 0);
1652 assert(strcmp(*p++, "files...") == 0);
1653 assert(strcmp(*p++, "--delete") == 0);
1654 assert(strcmp(*p++, "d") == 0);
1655 assert(strcmp(*p++, "--create") == 0);
1656 assert(strcmp(*p++, "--change") == 0);
1660 assert(option_index == 4);
1661 assert(optind == 6);
1662 assert(optarg == argv[5]);
1663 assert(optopt == 0);
1665 /*************************/
1666 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1669 assert(strcmp(*p++, "command_name") == 0);
1670 assert(strcmp(*p++, "--verbose") == 0);
1671 assert(strcmp(*p++, "--create=c") == 0);
1672 assert(strcmp(*p++, "--delete") == 0);
1673 assert(strcmp(*p++, "d") == 0);
1674 assert(strcmp(*p++, "files...") == 0);
1675 assert(strcmp(*p++, "--create") == 0);
1676 assert(strcmp(*p++, "--change") == 0);
1680 assert(option_index == 5);
1681 assert(optind == 7);
1682 assert(optarg == 0);
1683 assert(optopt == 0);
1685 /*************************/
1686 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1689 assert(strcmp(*p++, "command_name") == 0);
1690 assert(strcmp(*p++, "--verbose") == 0);
1691 assert(strcmp(*p++, "--create=c") == 0);
1692 assert(strcmp(*p++, "--delete") == 0);
1693 assert(strcmp(*p++, "d") == 0);
1694 assert(strcmp(*p++, "--create") == 0);
1695 assert(strcmp(*p++, "files...") == 0);
1696 assert(strcmp(*p++, "--change") == 0);
1700 assert(option_index == 6);
1701 assert(optind == 8);
1702 assert(optarg == 0);
1703 assert(optopt == 0);
1705 /*************************/
1706 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1709 assert(strcmp(*p++, "command_name") == 0);
1710 assert(strcmp(*p++, "--verbose") == 0);
1711 assert(strcmp(*p++, "--create=c") == 0);
1712 assert(strcmp(*p++, "--delete") == 0);
1713 assert(strcmp(*p++, "d") == 0);
1714 assert(strcmp(*p++, "--create") == 0);
1715 assert(strcmp(*p++, "--change") == 0);
1716 assert(strcmp(*p++, "files...") == 0);
1720 assert(option_index == 6);
1721 assert(optind == 7);
1722 assert(optarg == 0);
1723 assert(optopt == 0);
1733 argc++; *p++ = "command_name";
1734 argc++; *p++ = "--verbose";
1735 argc++; *p++ = "--create=c";
1736 argc++; *p++ = "files...";
1737 argc++; *p++ = "--delete";
1739 argc++; *p++ = "--"; /* option terminator */
1740 argc++; *p++ = "--change";
1743 /*************************/
1744 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1747 assert(strcmp(*p++, "command_name") == 0);
1748 assert(strcmp(*p++, "--verbose") == 0);
1749 assert(strcmp(*p++, "--create=c") == 0);
1750 assert(strcmp(*p++, "files...") == 0);
1751 assert(strcmp(*p++, "--delete") == 0);
1752 assert(strcmp(*p++, "d") == 0);
1753 assert(strcmp(*p++, "--") == 0);
1754 assert(strcmp(*p++, "--change") == 0);
1758 assert(option_index == 0);
1759 assert(optind == 2);
1760 assert(optarg == 0);
1761 assert(optopt == 0);
1763 /*************************/
1764 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1767 assert(strcmp(*p++, "command_name") == 0);
1768 assert(strcmp(*p++, "--verbose") == 0);
1769 assert(strcmp(*p++, "--create=c") == 0);
1770 assert(strcmp(*p++, "files...") == 0);
1771 assert(strcmp(*p++, "--delete") == 0);
1772 assert(strcmp(*p++, "d") == 0);
1773 assert(strcmp(*p++, "--") == 0);
1774 assert(strcmp(*p++, "--change") == 0);
1778 assert(option_index == 5);
1779 assert(optind == 3);
1780 assert(optarg == argv[2]+9);
1781 assert(optopt == 0);
1783 /*************************/
1784 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1787 assert(strcmp(*p++, "command_name") == 0);
1788 assert(strcmp(*p++, "--verbose") == 0);
1789 assert(strcmp(*p++, "--create=c") == 0);
1790 assert(strcmp(*p++, "files...") == 0);
1791 assert(strcmp(*p++, "--delete") == 0);
1792 assert(strcmp(*p++, "d") == 0);
1793 assert(strcmp(*p++, "--") == 0);
1794 assert(strcmp(*p++, "--change") == 0);
1798 assert(option_index == 4);
1799 assert(optind == 6);
1800 assert(optarg == argv[5]);
1801 assert(optopt == 0);
1803 /*************************/
1804 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1807 assert(strcmp(*p++, "command_name") == 0);
1808 assert(strcmp(*p++, "--verbose") == 0);
1809 assert(strcmp(*p++, "--create=c") == 0);
1810 assert(strcmp(*p++, "--delete") == 0);
1811 assert(strcmp(*p++, "d") == 0);
1812 assert(strcmp(*p++, "--") == 0);
1813 assert(strcmp(*p++, "files...") == 0);
1814 assert(strcmp(*p++, "--change") == 0);
1818 assert(option_index == 4);
1819 assert(optind == 6);
1820 assert(optarg == 0);
1821 assert(optopt == 0);
1832 argc++; *p++ = "command_name";
1833 argc++; *p++ = "-o5";
1834 argc++; *p++ = "files...";
1837 /*************************/
1838 c = call_getopt_long(argc, argv, "o[567]", long_options, &option_index);
1841 assert(strcmp(*p++, "command_name") == 0);
1842 assert(strcmp(*p++, "-o5") == 0);
1843 assert(strcmp(*p++, "files...") == 0);
1847 assert(option_index == 4); /* no changed */
1848 assert(optind == 2);
1849 assert(optarg == argv[1]+2);
1850 assert(optopt == 0);
1852 /*************************/
1853 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1856 assert(strcmp(*p++, "command_name") == 0);
1857 assert(strcmp(*p++, "-o5") == 0);
1858 assert(strcmp(*p++, "files...") == 0);
1862 assert(option_index == 4); /* no changed */
1863 assert(optind == 2);
1864 assert(optarg == 0);
1865 assert(optopt == 0);
1876 argc++; *p++ = "command_name";
1877 argc++; *p++ = "-a";
1878 argc++; *p++ = "-ccd";
1879 argc++; *p++ = "-ce";
1880 argc++; *p++ = "-d";
1882 argc++; *p++ = "-cdd";
1883 argc++; *p++ = "-d";
1886 /*************************/
1887 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1890 assert(strcmp(*p++, "command_name") == 0);
1891 assert(strcmp(*p++, "-a") == 0);
1892 assert(strcmp(*p++, "-ccd") == 0);
1893 assert(strcmp(*p++, "-ce") == 0);
1894 assert(strcmp(*p++, "-d") == 0);
1895 assert(strcmp(*p++, "d") == 0);
1896 assert(strcmp(*p++, "-cdd") == 0);
1897 assert(strcmp(*p++, "-d") == 0);
1901 assert(option_index == 4); /* no changed */
1902 assert(optind == 2);
1903 assert(optarg == 0);
1904 assert(optopt == 0);
1906 /*************************/
1907 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1910 assert(strcmp(*p++, "command_name") == 0);
1911 assert(strcmp(*p++, "-a") == 0);
1912 assert(strcmp(*p++, "-ccd") == 0);
1913 assert(strcmp(*p++, "-ce") == 0);
1914 assert(strcmp(*p++, "-d") == 0);
1915 assert(strcmp(*p++, "d") == 0);
1916 assert(strcmp(*p++, "-cdd") == 0);
1917 assert(strcmp(*p++, "-d") == 0);
1921 assert(option_index == 4); /* no changed */
1922 assert(optind == 2);
1923 assert(optarg == argv[2]+2);
1924 assert(optopt == 0);
1926 /*************************/
1927 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1930 assert(strcmp(*p++, "command_name") == 0);
1931 assert(strcmp(*p++, "-a") == 0);
1932 assert(strcmp(*p++, "-ccd") == 0);
1933 assert(strcmp(*p++, "-ce") == 0);
1934 assert(strcmp(*p++, "-d") == 0);
1935 assert(strcmp(*p++, "d") == 0);
1936 assert(strcmp(*p++, "-cdd") == 0);
1937 assert(strcmp(*p++, "-d") == 0);
1941 assert(option_index == 4); /* no changed */
1942 assert(optind == 3);
1943 assert(optarg == 0);
1944 assert(optopt == 0);
1946 /*************************/
1947 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1950 assert(strcmp(*p++, "command_name") == 0);
1951 assert(strcmp(*p++, "-a") == 0);
1952 assert(strcmp(*p++, "-ccd") == 0);
1953 assert(strcmp(*p++, "-ce") == 0);
1954 assert(strcmp(*p++, "-d") == 0);
1955 assert(strcmp(*p++, "d") == 0);
1956 assert(strcmp(*p++, "-cdd") == 0);
1957 assert(strcmp(*p++, "-d") == 0);
1961 assert(option_index == 4); /* no changed */
1962 assert(optind == 4);
1963 assert(optarg == argv[3]+2);
1964 assert(optopt == 0);
1966 /*************************/
1967 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1970 assert(strcmp(*p++, "command_name") == 0);
1971 assert(strcmp(*p++, "-a") == 0);
1972 assert(strcmp(*p++, "-ccd") == 0);
1973 assert(strcmp(*p++, "-ce") == 0);
1974 assert(strcmp(*p++, "-d") == 0);
1975 assert(strcmp(*p++, "d") == 0);
1976 assert(strcmp(*p++, "-cdd") == 0);
1977 assert(strcmp(*p++, "-d") == 0);
1981 assert(option_index == 4); /* no changed */
1982 assert(optind == 5);
1983 assert(optarg == 0);
1984 assert(optopt == 0);
1986 /*************************/
1987 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1990 assert(strcmp(*p++, "command_name") == 0);
1991 assert(strcmp(*p++, "-a") == 0);
1992 assert(strcmp(*p++, "-ccd") == 0);
1993 assert(strcmp(*p++, "-ce") == 0);
1994 assert(strcmp(*p++, "-d") == 0);
1995 assert(strcmp(*p++, "d") == 0);
1996 assert(strcmp(*p++, "-cdd") == 0);
1997 assert(strcmp(*p++, "-d") == 0);
2001 assert(option_index == 4); /* no changed */
2002 assert(optind == 6);
2003 assert(optarg == argv[6]+2);
2004 assert(optopt == 0);
2006 /*************************/
2007 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
2010 assert(strcmp(*p++, "command_name") == 0);
2011 assert(strcmp(*p++, "-a") == 0);
2012 assert(strcmp(*p++, "-ccd") == 0);
2013 assert(strcmp(*p++, "-ce") == 0);
2014 assert(strcmp(*p++, "-d") == 0);
2015 assert(strcmp(*p++, "d") == 0);
2016 assert(strcmp(*p++, "-cdd") == 0);
2017 assert(strcmp(*p++, "-d") == 0);
2021 assert(option_index == 4); /* no changed */
2022 assert(optind == 7);
2023 assert(optarg == 0);
2024 assert(optopt == 0);
2026 /*************************/
2027 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
2030 assert(strcmp(*p++, "command_name") == 0);
2031 assert(strcmp(*p++, "-a") == 0);
2032 assert(strcmp(*p++, "-ccd") == 0);
2033 assert(strcmp(*p++, "-ce") == 0);
2034 assert(strcmp(*p++, "-d") == 0);
2035 assert(strcmp(*p++, "-cdd") == 0);
2036 assert(strcmp(*p++, "d") == 0);
2037 assert(strcmp(*p++, "-d") == 0);
2041 assert(option_index == 4); /* no changed */
2042 assert(optind == 8);
2043 assert(optarg == 0);
2044 assert(optopt == 0);
2047 /*************************/
2048 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
2051 assert(strcmp(*p++, "command_name") == 0);
2052 assert(strcmp(*p++, "-a") == 0);
2053 assert(strcmp(*p++, "-ccd") == 0);
2054 assert(strcmp(*p++, "-ce") == 0);
2055 assert(strcmp(*p++, "-d") == 0);
2056 assert(strcmp(*p++, "-cdd") == 0);
2057 assert(strcmp(*p++, "-d") == 0);
2058 assert(strcmp(*p++, "d") == 0);
2062 assert(option_index == 4); /* no changed */
2063 assert(optind == 7);
2064 assert(optarg == 0);
2065 assert(optopt == 0);