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--)
104 argv[i] = argv[i-1]; //printf("%s\n", argv[i]);
107 for (i = src; i < dest; i++)
108 argv[i] = argv[i+1]; //printf("%s\n", argv[i]);
112 //printf("%s\n", argv[dest]);
118 search_longopt(char *arg, struct option *longopts)
122 for (len = 0; arg[len] && arg[len] != '='; len++)
125 for (i = 0; longopts[i].name; i++) {
126 //printf("%d\t%s\t", i, longopts[i].name);
127 //printf("%s\n", arg);
128 if (strncmp(arg, longopts[i].name, len) == 0) {
130 return -1; /* found some candidate */
132 //printf("found = %d\n", found);
139 * implemented my extention feature.
140 * optional 1 byte argument with [...]
141 * e.g.) shortopts = "a[0123]b"
142 * accepts "-a0 -a1b" (same as "-a0 -a1 -b")
145 has_argument_short(char *arg, const char *shortopts)
148 int open_bracket = 0;
149 for (i = 0; shortopts[i]; i++) {
150 switch (shortopts[i]) {
155 if (open_bracket <= 0) {
156 fprintf(stderr, "getopt_long() -- unbalanced bracket in short options");
162 if (open_bracket) continue;
163 if (*arg != shortopts[i]) continue;
165 switch (shortopts[i+1]) {
167 if (shortopts[i+2] != ':') {
169 return 1; /* following string is argument */
171 return 2; /* next argv is argument */
174 /* '::' means optional argument (GNU extention) */
178 return 0; /* no argument */
182 return 0; /* no argument */
184 for (i++; shortopts[i] && shortopts[i] != ']'; i++) {
185 if (arg[1] == shortopts[i])
186 return 3; /* has 1 byte argument */
189 fprintf(stderr, "getopt_long() -- unbalanced bracket in short options");
194 return 0; /* no argument */
202 has_argument_long(char *arg, struct option *longopts)
206 i = search_longopt(arg, longopts);
212 int len = strlen(arg);
213 char *p = strchr(arg, '=');
218 switch (longopts[i].has_arg) {
221 case required_argument:
226 case optional_argument:
240 1: has argument in this argv
241 2: has argument in next argv
242 3: has 1 byte argument in this argv
245 has_argument(char *arg,
246 const char *shortopts,
247 struct option *longopts)
251 switch (is_option(arg)) {
252 case 0: /* no option */
257 for (i = 1; arg[i]; i++) {
258 n = has_argument_short(arg+i, shortopts);
259 if (n == 0 && arg[i+1]) continue;
260 if (n == 3 && arg[i+2]) { i++; continue; }
266 return has_argument_long(arg+2, longopts);
274 getopt_long(int argc, char **argv,
275 const char *shortopts,
276 struct option *longopts,
281 static int shortoptind;
282 static int no_optind = 0;
284 if (optind == 0) { /* skip first argument (command name) */
292 if (no_optind && !shortoptind) {
293 while (!is_option(argv[no_optind]))
294 insert_argv(argv, no_optind, optind-1);
296 if (has_argument(argv[no_optind], shortopts, longopts) == 2)
301 if (argv[optind] && strcmp(argv[optind], "--") == 0) {
302 while (!is_option(argv[no_optind]))
303 insert_argv(argv, no_optind, optind);
314 puts_argv(&argv[optind]);
317 if (shortoptind == 0 && is_option(opt) == 1) {
323 char *p = &opt[shortoptind];
328 switch (has_argument_short(p, shortopts)) {
334 if (opt[shortoptind] == '\0')
335 optind++, shortoptind = 0;
338 /* following character is argument */
339 optind++, shortoptind = 0;
343 /* next argv is argument */
344 optind++, shortoptind = 0;
345 optarg = argv[optind++];
348 /* has 1 byte argument */
351 optind++, shortoptind = 0;
359 "%s: invalid option -- %c\n",
363 optind++, shortoptind = 0;
368 else if (opt[0] == '-' && opt[1] == '-') {
371 if (opt[2] == '\0') {
372 /* end of command line switch */
379 i = search_longopt(opt, longopts);
386 int len = strlen(opt);
387 char *p = strchr(opt, '=');
392 switch (longopts[i].has_arg) {
395 case required_argument:
397 optarg = opt + len + 1;
400 optarg = argv[optind];
404 "%s: option `--%s' requires an argument\n",
409 return '?'; /* no argument */
413 case optional_argument:
415 optarg = opt + len + 1;
426 if (longopts[i].flag) {
427 *longopts[i].flag = longopts[i].val;
431 return longopts[i].val;
444 for (i = optind; argv[i]; i++) {
445 if (is_option(argv[i])) {
468 #include <getopt.h> /* use GNU getopt_long() */
471 static int verbose_flag;
472 static int option_index;
477 static struct option long_options[] = {
478 {"verbose", no_argument, &verbose_flag, 1},
479 {"brief", no_argument, &verbose_flag, 0},
480 {"add", required_argument, 0, 'a'},
481 {"append", no_argument, 0, 0},
482 {"delete", required_argument, 0, 0},
483 {"create", optional_argument, 0, 0},
484 {"change", optional_argument, 0, 0},
489 call_getopt_long(int argc, char **argv,
490 const char *shortopts,
491 struct option *longopts,
495 c = getopt_long(argc, argv, shortopts, longopts, indexptr);
497 printf("ret=%d(%c) option_index=%d ", c, c, option_index);
498 printf("optind=%d optarg=[%s] opterr=%d optopt=%d(%c)\n",
499 optind, optarg, opterr, optopt, optopt);
502 opt = &longopts[*indexptr];
503 printf("long option: --%s has_arg=%d\n", opt->name, opt->has_arg);
505 printf(" flag=[%8p] val=%d\n", opt->flag, *opt->flag);
518 argc++; *p++ = "command_name";
520 argc++; *p++ = "-bcd";
527 /*************************/
528 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
531 assert(option_index == 0);
536 /*************************/
537 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
540 assert(option_index == 0);
545 /*************************/
546 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
549 assert(option_index == 0);
551 assert(optarg == &argv[2][3]);
554 /*************************/
555 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
558 assert(option_index == 0);
560 assert(optarg == argv[4]);
563 /*************************/
564 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
567 assert(option_index == 0);
570 assert(optopt == 'f');
572 /*************************/
573 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
576 assert(option_index == 0);
579 assert(optopt == 'g');
581 /*************************/
582 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
585 assert(option_index == 0);
588 assert(optopt == 'g'); /* no changed */
598 argc++; *p++ = "command_name";
599 argc++; *p++ = "--verbose";
600 argc++; *p++ = "--brief";
601 argc++; *p++ = "--add";
602 argc++; *p++ = "add_argument";
603 argc++; *p++ = "--add=add_argument";
604 argc++; *p++ = "--append";
605 argc++; *p++ = "--delete=del_argument";
606 argc++; *p++ = "--create=cre_argument";
607 argc++; *p++ = "--create";
608 argc++; *p++ = "files...";
611 /*************************/
612 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
615 assert(option_index == 0);
618 assert(optopt == 'g'); /* no changed */
619 assert(strcmp(long_options[option_index].name, "verbose") == 0);
620 assert(*long_options[option_index].flag == 1);
622 /*************************/
623 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
626 assert(option_index == 1);
629 assert(optopt == 'g'); /* no changed */
630 assert(strcmp(long_options[option_index].name, "brief") == 0);
631 assert(*long_options[option_index].flag == 0);
633 /*************************/
634 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
637 assert(option_index == 2);
639 assert(optarg == argv[4]);
640 assert(optopt == 'g'); /* no changed */
641 assert(strcmp(long_options[option_index].name, "add") == 0);
642 assert(long_options[option_index].flag == 0);
644 /*************************/
645 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
648 assert(option_index == 2);
650 assert(optarg == argv[5]+6);
651 assert(optopt == 'g'); /* no changed */
652 assert(strcmp(long_options[option_index].name, "add") == 0);
653 assert(long_options[option_index].flag == 0);
655 /*************************/
656 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
659 assert(option_index == 3);
662 assert(optopt == 'g'); /* no changed */
663 assert(strcmp(long_options[option_index].name, "append") == 0);
664 assert(long_options[option_index].flag == 0);
666 /*************************/
667 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
670 assert(option_index == 4);
672 assert(optarg == argv[7]+9);
673 assert(optopt == 'g'); /* no changed */
674 assert(strcmp(long_options[option_index].name, "delete") == 0);
675 assert(long_options[option_index].flag == 0);
677 /*************************/
678 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
681 assert(option_index == 5);
683 assert(optarg == argv[8]+9);
684 assert(optopt == 'g'); /* no changed */
685 assert(strcmp(long_options[option_index].name, "create") == 0);
686 assert(long_options[option_index].flag == 0);
688 /*************************/
689 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
692 assert(option_index == 5);
693 assert(optind == 10);
695 assert(optopt == 'g'); /* no changed */
696 assert(strcmp(long_options[option_index].name, "create") == 0);
697 assert(long_options[option_index].flag == 0);
699 /*************************/
700 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
703 assert(option_index == 5); /* no changed */
704 assert(optind == 10);
706 assert(optopt == 'g'); /* no changed */
707 assert(strcmp(argv[optind], "files...") == 0);
718 argc++; *p++ = "command_name";
719 argc++; *p++ = "--delete"; /* required argument has no argument */
722 /*************************/
723 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
726 assert(option_index == 5); /* no changed */
727 assert(optind == 2); /* changed */
729 assert(optopt == 0); /* changed */
730 assert(argv[optind] == 0);
737 argc++; *p++ = "command_name";
738 argc++; *p++ = "--file"; /* not option */
741 /*************************/
742 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
745 assert(option_index == 5); /* no changed */
749 assert(argv[optind] == 0);
759 argc++; *p++ = "command_name";
765 argc++; *p++ = "-efg"; /* some options in a argument */
772 /*************************/
773 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
776 assert(strcmp(*p++, "command_name") == 0);
777 assert(strcmp(*p++, "-a") == 0);
778 assert(strcmp(*p++, "a1") == 0);
779 assert(strcmp(*p++, "a2") == 0);
780 assert(strcmp(*p++, "-b") == 0);
781 assert(strcmp(*p++, "b") == 0);
782 assert(strcmp(*p++, "-efg") == 0);
783 assert(strcmp(*p++, "g") == 0);
784 assert(strcmp(*p++, "-c") == 0);
785 assert(strcmp(*p++, "c") == 0);
786 assert(strcmp(*p++, "d") == 0);
790 assert(option_index == 5); /* no changed */
795 /*************************/
796 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
799 assert(strcmp(*p++, "command_name") == 0);
800 assert(strcmp(*p++, "-a") == 0);
801 assert(strcmp(*p++, "a1") == 0);
802 assert(strcmp(*p++, "a2") == 0);
803 assert(strcmp(*p++, "-b") == 0);
804 assert(strcmp(*p++, "b") == 0);
805 assert(strcmp(*p++, "-efg") == 0);
806 assert(strcmp(*p++, "g") == 0);
807 assert(strcmp(*p++, "-c") == 0);
808 assert(strcmp(*p++, "c") == 0);
809 assert(strcmp(*p++, "d") == 0);
813 assert(option_index == 5); /* no changed */
818 /*************************/
819 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
822 assert(strcmp(*p++, "command_name") == 0);
823 assert(strcmp(*p++, "-a") == 0);
824 assert(strcmp(*p++, "-b") == 0);
825 assert(strcmp(*p++, "a1") == 0);
826 assert(strcmp(*p++, "a2") == 0);
827 assert(strcmp(*p++, "b") == 0);
828 assert(strcmp(*p++, "-efg") == 0);
829 assert(strcmp(*p++, "g") == 0);
830 assert(strcmp(*p++, "-c") == 0);
831 assert(strcmp(*p++, "c") == 0);
832 assert(strcmp(*p++, "d") == 0);
836 assert(option_index == 5); /* no changed */
841 /*************************/
842 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
845 assert(strcmp(*p++, "command_name") == 0);
846 assert(strcmp(*p++, "-a") == 0);
847 assert(strcmp(*p++, "-b") == 0);
848 assert(strcmp(*p++, "a1") == 0);
849 assert(strcmp(*p++, "a2") == 0);
850 assert(strcmp(*p++, "b") == 0);
851 assert(strcmp(*p++, "-efg") == 0);
852 assert(strcmp(*p++, "g") == 0);
853 assert(strcmp(*p++, "-c") == 0);
854 assert(strcmp(*p++, "c") == 0);
855 assert(strcmp(*p++, "d") == 0);
859 assert(option_index == 5); /* no changed */
864 /*************************/
865 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
868 assert(strcmp(*p++, "command_name") == 0);
869 assert(strcmp(*p++, "-a") == 0);
870 assert(strcmp(*p++, "-b") == 0);
871 assert(strcmp(*p++, "a1") == 0);
872 assert(strcmp(*p++, "a2") == 0);
873 assert(strcmp(*p++, "b") == 0);
874 assert(strcmp(*p++, "-efg") == 0);
875 assert(strcmp(*p++, "g") == 0);
876 assert(strcmp(*p++, "-c") == 0);
877 assert(strcmp(*p++, "c") == 0);
878 assert(strcmp(*p++, "d") == 0);
882 assert(option_index == 5); /* no changed */
884 assert(optarg == argv[7]);
887 /*************************/
888 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
891 assert(strcmp(*p++, "command_name") == 0);
892 assert(strcmp(*p++, "-a") == 0);
893 assert(strcmp(*p++, "-b") == 0);
894 assert(strcmp(*p++, "-efg") == 0);
895 assert(strcmp(*p++, "g") == 0);
896 assert(strcmp(*p++, "a1") == 0);
897 assert(strcmp(*p++, "a2") == 0);
898 assert(strcmp(*p++, "b") == 0);
899 assert(strcmp(*p++, "-c") == 0);
900 assert(strcmp(*p++, "c") == 0);
901 assert(strcmp(*p++, "d") == 0);
905 assert(option_index == 5); /* no changed */
906 assert(optind == 10);
907 assert(optarg == argv[9]);
910 /*************************/
911 c = call_getopt_long(argc, argv, "abc:d:efg:", long_options, &option_index);
914 assert(strcmp(*p++, "command_name") == 0);
915 assert(strcmp(*p++, "-a") == 0);
916 assert(strcmp(*p++, "-b") == 0);
917 assert(strcmp(*p++, "-efg") == 0);
918 assert(strcmp(*p++, "g") == 0);
919 assert(strcmp(*p++, "-c") == 0);
920 assert(strcmp(*p++, "c") == 0);
921 assert(strcmp(*p++, "a1") == 0);
922 assert(strcmp(*p++, "a2") == 0);
923 assert(strcmp(*p++, "b") == 0);
924 assert(strcmp(*p++, "d") == 0);
928 assert(option_index == 5); /* no changed */
942 argc++; *p++ = "command_name";
948 /*************************/
949 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
952 assert(strcmp(*p++, "command_name") == 0);
953 assert(strcmp(*p++, "-a") == 0);
954 assert(strcmp(*p++, "-") == 0);
955 assert(strcmp(*p++, "-b") == 0);
959 assert(option_index == 5); /* no changed */
964 /*************************/
965 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
968 assert(strcmp(*p++, "command_name") == 0);
969 assert(strcmp(*p++, "-a") == 0);
970 assert(strcmp(*p++, "-") == 0);
971 assert(strcmp(*p++, "-b") == 0);
975 assert(option_index == 5); /* no changed */
980 /*************************/
981 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
984 assert(strcmp(*p++, "command_name") == 0);
985 assert(strcmp(*p++, "-a") == 0);
986 assert(strcmp(*p++, "-b") == 0);
987 assert(strcmp(*p++, "-") == 0);
991 assert(option_index == 5); /* no changed */
1004 argc++; *p++ = "command_name";
1005 argc++; *p++ = "-a";
1008 argc++; *p++ = "-b";
1011 /*************************/
1012 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1015 assert(strcmp(*p++, "command_name") == 0);
1016 assert(strcmp(*p++, "-a") == 0);
1017 assert(strcmp(*p++, "-") == 0);
1018 assert(strcmp(*p++, "-") == 0);
1019 assert(strcmp(*p++, "-b") == 0);
1023 assert(option_index == 5); /* no changed */
1024 assert(optind == 2);
1025 assert(optarg == 0);
1026 assert(optopt == 0);
1028 /*************************/
1029 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1032 assert(strcmp(*p++, "command_name") == 0);
1033 assert(strcmp(*p++, "-a") == 0);
1034 assert(strcmp(*p++, "-") == 0);
1035 assert(strcmp(*p++, "-") == 0);
1036 assert(strcmp(*p++, "-b") == 0);
1040 assert(option_index == 5); /* no changed */
1041 assert(optind == 5);
1042 assert(optarg == 0);
1043 assert(optopt == 0);
1045 /*************************/
1046 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1049 assert(strcmp(*p++, "command_name") == 0);
1050 assert(strcmp(*p++, "-a") == 0);
1051 assert(strcmp(*p++, "-b") == 0);
1052 assert(strcmp(*p++, "-") == 0);
1053 assert(strcmp(*p++, "-") == 0);
1057 assert(option_index == 5); /* no changed */
1058 assert(optind == 3);
1059 assert(optarg == 0);
1060 assert(optopt == 0);
1070 argc++; *p++ = "command_name";
1071 argc++; *p++ = "-a";
1074 argc++; *p++ = "-c";
1078 /*************************/
1079 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1082 assert(strcmp(*p++, "command_name") == 0);
1083 assert(strcmp(*p++, "-a") == 0);
1084 assert(strcmp(*p++, "-") == 0);
1085 assert(strcmp(*p++, "-") == 0);
1086 assert(strcmp(*p++, "-c") == 0);
1087 assert(strcmp(*p++, "c") == 0);
1091 assert(option_index == 5); /* no changed */
1092 assert(optind == 2);
1093 assert(optarg == 0);
1094 assert(optopt == 0);
1096 /*************************/
1097 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1100 assert(strcmp(*p++, "command_name") == 0);
1101 assert(strcmp(*p++, "-a") == 0);
1102 assert(strcmp(*p++, "-") == 0);
1103 assert(strcmp(*p++, "-") == 0);
1104 assert(strcmp(*p++, "-c") == 0);
1105 assert(strcmp(*p++, "c") == 0);
1109 assert(option_index == 5); /* no changed */
1110 assert(optind == 6);
1111 assert(optarg == argv[5]);
1112 assert(optopt == 0);
1114 /*************************/
1115 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1118 assert(strcmp(*p++, "command_name") == 0);
1119 assert(strcmp(*p++, "-a") == 0);
1120 assert(strcmp(*p++, "-c") == 0);
1121 assert(strcmp(*p++, "c") == 0);
1122 assert(strcmp(*p++, "-") == 0);
1123 assert(strcmp(*p++, "-") == 0);
1127 assert(option_index == 5); /* no changed */
1128 assert(optind == 4);
1129 assert(optarg == 0);
1130 assert(optopt == 0);
1140 argc++; *p++ = "command_name";
1141 argc++; *p++ = "-a";
1142 argc++; *p++ = "-c";
1144 argc++; *p++ = "--";
1145 argc++; *p++ = "-d";
1149 /*************************/
1150 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1153 assert(strcmp(*p++, "command_name") == 0);
1154 assert(strcmp(*p++, "-a") == 0);
1155 assert(strcmp(*p++, "-c") == 0);
1156 assert(strcmp(*p++, "c") == 0);
1157 assert(strcmp(*p++, "--") == 0);
1158 assert(strcmp(*p++, "-d") == 0);
1159 assert(strcmp(*p++, "d") == 0);
1163 assert(option_index == 5); /* no changed */
1164 assert(optind == 2);
1165 assert(optarg == 0);
1166 assert(optopt == 0);
1168 /*************************/
1169 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1172 assert(strcmp(*p++, "command_name") == 0);
1173 assert(strcmp(*p++, "-a") == 0);
1174 assert(strcmp(*p++, "-c") == 0);
1175 assert(strcmp(*p++, "c") == 0);
1176 assert(strcmp(*p++, "--") == 0);
1177 assert(strcmp(*p++, "-d") == 0);
1178 assert(strcmp(*p++, "d") == 0);
1182 assert(option_index == 5); /* no changed */
1183 assert(optind == 4);
1184 assert(optarg == argv[3]);
1185 assert(optopt == 0);
1187 /*************************/
1188 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1191 assert(strcmp(*p++, "command_name") == 0);
1192 assert(strcmp(*p++, "-a") == 0);
1193 assert(strcmp(*p++, "-c") == 0);
1194 assert(strcmp(*p++, "c") == 0);
1195 assert(strcmp(*p++, "--") == 0);
1196 assert(strcmp(*p++, "-d") == 0);
1197 assert(strcmp(*p++, "d") == 0);
1201 assert(option_index == 5); /* no changed */
1202 assert(optind == 5);
1203 assert(optarg == 0);
1204 assert(optopt == 0);
1206 /*************************/
1207 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1210 assert(strcmp(*p++, "command_name") == 0);
1211 assert(strcmp(*p++, "-a") == 0);
1212 assert(strcmp(*p++, "-c") == 0);
1213 assert(strcmp(*p++, "c") == 0);
1214 assert(strcmp(*p++, "--") == 0);
1215 assert(strcmp(*p++, "-d") == 0);
1216 assert(strcmp(*p++, "d") == 0);
1220 assert(option_index == 5); /* no changed */
1221 assert(optind == 7);
1222 assert(optarg == argv[6]);
1223 assert(optopt == 0);
1233 argc++; *p++ = "command_name";
1234 argc++; *p++ = "-a";
1237 argc++; *p++ = "-c";
1239 argc++; *p++ = "--";
1240 argc++; *p++ = "-d";
1244 /*************************/
1245 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1248 assert(strcmp(*p++, "command_name") == 0);
1249 assert(strcmp(*p++, "-a") == 0);
1250 assert(strcmp(*p++, "-") == 0);
1251 assert(strcmp(*p++, "-") == 0);
1252 assert(strcmp(*p++, "-c") == 0);
1253 assert(strcmp(*p++, "c") == 0);
1254 assert(strcmp(*p++, "--") == 0);
1255 assert(strcmp(*p++, "-d") == 0);
1256 assert(strcmp(*p++, "d") == 0);
1260 assert(option_index == 5); /* no changed */
1261 assert(optind == 2);
1262 assert(optarg == 0);
1263 assert(optopt == 0);
1265 /*************************/
1266 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1269 assert(strcmp(*p++, "command_name") == 0);
1270 assert(strcmp(*p++, "-a") == 0);
1271 assert(strcmp(*p++, "-") == 0);
1272 assert(strcmp(*p++, "-") == 0);
1273 assert(strcmp(*p++, "-c") == 0);
1274 assert(strcmp(*p++, "c") == 0);
1275 assert(strcmp(*p++, "--") == 0);
1276 assert(strcmp(*p++, "-d") == 0);
1277 assert(strcmp(*p++, "d") == 0);
1281 assert(option_index == 5); /* no changed */
1282 assert(optind == 6);
1283 assert(optarg == argv[5]);
1284 assert(optopt == 0);
1286 /*************************/
1287 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1290 assert(strcmp(*p++, "command_name") == 0);
1291 assert(strcmp(*p++, "-a") == 0);
1292 assert(strcmp(*p++, "-c") == 0);
1293 assert(strcmp(*p++, "c") == 0);
1294 assert(strcmp(*p++, "--") == 0);
1295 assert(strcmp(*p++, "-") == 0);
1296 assert(strcmp(*p++, "-") == 0);
1297 assert(strcmp(*p++, "-d") == 0);
1298 assert(strcmp(*p++, "d") == 0);
1302 assert(option_index == 5); /* no changed */
1303 assert(optind == 5);
1304 assert(optarg == 0);
1305 assert(optopt == 0);
1307 /*************************/
1308 c = call_getopt_long(argc, argv, "abc:d:", long_options, &option_index);
1311 assert(strcmp(*p++, "command_name") == 0);
1312 assert(strcmp(*p++, "-a") == 0);
1313 assert(strcmp(*p++, "-c") == 0);
1314 assert(strcmp(*p++, "c") == 0);
1315 assert(strcmp(*p++, "--") == 0);
1316 assert(strcmp(*p++, "-") == 0);
1317 assert(strcmp(*p++, "-") == 0);
1318 assert(strcmp(*p++, "-d") == 0);
1319 assert(strcmp(*p++, "d") == 0);
1323 assert(option_index == 5); /* no changed */
1324 assert(optind == 9);
1325 assert(optarg == argv[8]);
1326 assert(optopt == 0);
1336 argc++; *p++ = "command_name";
1337 argc++; *p++ = "-a";
1338 argc++; *p++ = "-cc";
1339 argc++; *p++ = "-d";
1341 argc++; *p++ = "-c"; /* no argument */
1342 argc++; *p++ = "-d"; /* at last */
1345 /*************************/
1346 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1349 assert(strcmp(*p++, "command_name") == 0);
1350 assert(strcmp(*p++, "-a") == 0);
1351 assert(strcmp(*p++, "-cc") == 0);
1352 assert(strcmp(*p++, "-d") == 0);
1353 assert(strcmp(*p++, "d") == 0);
1354 assert(strcmp(*p++, "-c") == 0);
1355 assert(strcmp(*p++, "-d") == 0);
1359 assert(option_index == 5); /* no changed */
1360 assert(optind == 2);
1361 assert(optarg == 0);
1362 assert(optopt == 0);
1364 /*************************/
1365 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1368 assert(strcmp(*p++, "command_name") == 0);
1369 assert(strcmp(*p++, "-a") == 0);
1370 assert(strcmp(*p++, "-cc") == 0);
1371 assert(strcmp(*p++, "-d") == 0);
1372 assert(strcmp(*p++, "d") == 0);
1373 assert(strcmp(*p++, "-c") == 0);
1374 assert(strcmp(*p++, "-d") == 0);
1378 assert(option_index == 5); /* no changed */
1379 assert(optind == 3);
1380 assert(optarg == argv[2]+2);
1381 assert(optopt == 0);
1383 /*************************/
1384 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1387 assert(strcmp(*p++, "command_name") == 0);
1388 assert(strcmp(*p++, "-a") == 0);
1389 assert(strcmp(*p++, "-cc") == 0);
1390 assert(strcmp(*p++, "-d") == 0);
1391 assert(strcmp(*p++, "d") == 0);
1392 assert(strcmp(*p++, "-c") == 0);
1393 assert(strcmp(*p++, "-d") == 0);
1397 assert(option_index == 5); /* no changed */
1398 assert(optind == 4);
1399 assert(optarg == 0);
1400 assert(optopt == 0);
1402 /*************************/
1403 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1406 assert(strcmp(*p++, "command_name") == 0);
1407 assert(strcmp(*p++, "-a") == 0);
1408 assert(strcmp(*p++, "-cc") == 0);
1409 assert(strcmp(*p++, "-d") == 0);
1410 assert(strcmp(*p++, "d") == 0);
1411 assert(strcmp(*p++, "-c") == 0);
1412 assert(strcmp(*p++, "-d") == 0);
1416 assert(option_index == 5); /* no changed */
1417 assert(optind == 6);
1418 assert(optarg == 0);
1419 assert(optopt == 0);
1421 /*************************/
1422 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1425 assert(strcmp(*p++, "command_name") == 0);
1426 assert(strcmp(*p++, "-a") == 0);
1427 assert(strcmp(*p++, "-cc") == 0);
1428 assert(strcmp(*p++, "-d") == 0);
1429 assert(strcmp(*p++, "-c") == 0);
1430 assert(strcmp(*p++, "d") == 0);
1431 assert(strcmp(*p++, "-d") == 0);
1435 assert(option_index == 5); /* no changed */
1436 assert(optind == 7);
1437 assert(optarg == 0);
1438 assert(optopt == 0);
1440 /*************************/
1441 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1444 assert(strcmp(*p++, "command_name") == 0);
1445 assert(strcmp(*p++, "-a") == 0);
1446 assert(strcmp(*p++, "-cc") == 0);
1447 assert(strcmp(*p++, "-d") == 0);
1448 assert(strcmp(*p++, "-c") == 0);
1449 assert(strcmp(*p++, "-d") == 0);
1450 assert(strcmp(*p++, "d") == 0);
1454 assert(option_index == 5); /* no changed */
1455 assert(optind == 6);
1456 assert(optarg == 0);
1457 assert(optopt == 0);
1467 argc++; *p++ = "command_name";
1468 argc++; *p++ = "--verbose";
1469 argc++; *p++ = "--create=c";
1470 argc++; *p++ = "--change";
1472 argc++; *p++ = "--create"; /* no argument */
1473 argc++; *p++ = "--change"; /* at last */
1476 /*************************/
1477 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1480 assert(strcmp(*p++, "command_name") == 0);
1481 assert(strcmp(*p++, "--verbose") == 0);
1482 assert(strcmp(*p++, "--create=c") == 0);
1483 assert(strcmp(*p++, "--change") == 0);
1484 assert(strcmp(*p++, "d") == 0);
1485 assert(strcmp(*p++, "--create") == 0);
1486 assert(strcmp(*p++, "--change") == 0);
1490 assert(option_index == 0);
1491 assert(optind == 2);
1492 assert(optarg == 0);
1493 assert(optopt == 0);
1495 /*************************/
1496 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1499 assert(strcmp(*p++, "command_name") == 0);
1500 assert(strcmp(*p++, "--verbose") == 0);
1501 assert(strcmp(*p++, "--create=c") == 0);
1502 assert(strcmp(*p++, "--change") == 0);
1503 assert(strcmp(*p++, "d") == 0);
1504 assert(strcmp(*p++, "--create") == 0);
1505 assert(strcmp(*p++, "--change") == 0);
1509 assert(option_index == 5);
1510 assert(optind == 3);
1511 assert(optarg == argv[2]+9);
1512 assert(optopt == 0);
1514 /*************************/
1515 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1518 assert(strcmp(*p++, "command_name") == 0);
1519 assert(strcmp(*p++, "--verbose") == 0);
1520 assert(strcmp(*p++, "--create=c") == 0);
1521 assert(strcmp(*p++, "--change") == 0);
1522 assert(strcmp(*p++, "d") == 0);
1523 assert(strcmp(*p++, "--create") == 0);
1524 assert(strcmp(*p++, "--change") == 0);
1528 assert(option_index == 6);
1529 assert(optind == 4);
1530 assert(optarg == 0);
1531 assert(optopt == 0);
1533 /*************************/
1534 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1537 assert(strcmp(*p++, "command_name") == 0);
1538 assert(strcmp(*p++, "--verbose") == 0);
1539 assert(strcmp(*p++, "--create=c") == 0);
1540 assert(strcmp(*p++, "--change") == 0);
1541 assert(strcmp(*p++, "d") == 0);
1542 assert(strcmp(*p++, "--create") == 0);
1543 assert(strcmp(*p++, "--change") == 0);
1547 assert(option_index == 5);
1548 assert(optind == 6);
1549 assert(optarg == 0);
1550 assert(optopt == 0);
1552 /*************************/
1553 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1556 assert(strcmp(*p++, "command_name") == 0);
1557 assert(strcmp(*p++, "--verbose") == 0);
1558 assert(strcmp(*p++, "--create=c") == 0);
1559 assert(strcmp(*p++, "--change") == 0);
1560 assert(strcmp(*p++, "--create") == 0);
1561 assert(strcmp(*p++, "d") == 0);
1562 assert(strcmp(*p++, "--change") == 0);
1566 assert(option_index == 6);
1567 assert(optind == 7);
1568 assert(optarg == 0);
1569 assert(optopt == 0);
1571 /*************************/
1572 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1575 assert(strcmp(*p++, "command_name") == 0);
1576 assert(strcmp(*p++, "--verbose") == 0);
1577 assert(strcmp(*p++, "--create=c") == 0);
1578 assert(strcmp(*p++, "--change") == 0);
1579 assert(strcmp(*p++, "--create") == 0);
1580 assert(strcmp(*p++, "--change") == 0);
1581 assert(strcmp(*p++, "d") == 0);
1585 assert(option_index == 6);
1586 assert(optind == 6);
1587 assert(optarg == 0);
1588 assert(optopt == 0);
1598 argc++; *p++ = "command_name";
1599 argc++; *p++ = "--verbose";
1600 argc++; *p++ = "--create=c";
1601 argc++; *p++ = "files...";
1602 argc++; *p++ = "--delete"; /* required argument */
1604 argc++; *p++ = "--create"; /* no argument */
1605 argc++; *p++ = "--change"; /* at last */
1608 /*************************/
1609 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1612 assert(strcmp(*p++, "command_name") == 0);
1613 assert(strcmp(*p++, "--verbose") == 0);
1614 assert(strcmp(*p++, "--create=c") == 0);
1615 assert(strcmp(*p++, "files...") == 0);
1616 assert(strcmp(*p++, "--delete") == 0);
1617 assert(strcmp(*p++, "d") == 0);
1618 assert(strcmp(*p++, "--create") == 0);
1619 assert(strcmp(*p++, "--change") == 0);
1623 assert(option_index == 0);
1624 assert(optind == 2);
1625 assert(optarg == 0);
1626 assert(optopt == 0);
1628 /*************************/
1629 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1632 assert(strcmp(*p++, "command_name") == 0);
1633 assert(strcmp(*p++, "--verbose") == 0);
1634 assert(strcmp(*p++, "--create=c") == 0);
1635 assert(strcmp(*p++, "files...") == 0);
1636 assert(strcmp(*p++, "--delete") == 0);
1637 assert(strcmp(*p++, "d") == 0);
1638 assert(strcmp(*p++, "--create") == 0);
1639 assert(strcmp(*p++, "--change") == 0);
1643 assert(option_index == 5);
1644 assert(optind == 3);
1645 assert(optarg == argv[2]+9);
1646 assert(optopt == 0);
1648 /*************************/
1649 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1652 assert(strcmp(*p++, "command_name") == 0);
1653 assert(strcmp(*p++, "--verbose") == 0);
1654 assert(strcmp(*p++, "--create=c") == 0);
1655 assert(strcmp(*p++, "files...") == 0);
1656 assert(strcmp(*p++, "--delete") == 0);
1657 assert(strcmp(*p++, "d") == 0);
1658 assert(strcmp(*p++, "--create") == 0);
1659 assert(strcmp(*p++, "--change") == 0);
1663 assert(option_index == 4);
1664 assert(optind == 6);
1665 assert(optarg == argv[5]);
1666 assert(optopt == 0);
1668 /*************************/
1669 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1672 assert(strcmp(*p++, "command_name") == 0);
1673 assert(strcmp(*p++, "--verbose") == 0);
1674 assert(strcmp(*p++, "--create=c") == 0);
1675 assert(strcmp(*p++, "--delete") == 0);
1676 assert(strcmp(*p++, "d") == 0);
1677 assert(strcmp(*p++, "files...") == 0);
1678 assert(strcmp(*p++, "--create") == 0);
1679 assert(strcmp(*p++, "--change") == 0);
1683 assert(option_index == 5);
1684 assert(optind == 7);
1685 assert(optarg == 0);
1686 assert(optopt == 0);
1688 /*************************/
1689 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1692 assert(strcmp(*p++, "command_name") == 0);
1693 assert(strcmp(*p++, "--verbose") == 0);
1694 assert(strcmp(*p++, "--create=c") == 0);
1695 assert(strcmp(*p++, "--delete") == 0);
1696 assert(strcmp(*p++, "d") == 0);
1697 assert(strcmp(*p++, "--create") == 0);
1698 assert(strcmp(*p++, "files...") == 0);
1699 assert(strcmp(*p++, "--change") == 0);
1703 assert(option_index == 6);
1704 assert(optind == 8);
1705 assert(optarg == 0);
1706 assert(optopt == 0);
1708 /*************************/
1709 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1712 assert(strcmp(*p++, "command_name") == 0);
1713 assert(strcmp(*p++, "--verbose") == 0);
1714 assert(strcmp(*p++, "--create=c") == 0);
1715 assert(strcmp(*p++, "--delete") == 0);
1716 assert(strcmp(*p++, "d") == 0);
1717 assert(strcmp(*p++, "--create") == 0);
1718 assert(strcmp(*p++, "--change") == 0);
1719 assert(strcmp(*p++, "files...") == 0);
1723 assert(option_index == 6);
1724 assert(optind == 7);
1725 assert(optarg == 0);
1726 assert(optopt == 0);
1736 argc++; *p++ = "command_name";
1737 argc++; *p++ = "--verbose";
1738 argc++; *p++ = "--create=c";
1739 argc++; *p++ = "files...";
1740 argc++; *p++ = "--delete";
1742 argc++; *p++ = "--"; /* option terminator */
1743 argc++; *p++ = "--change";
1746 /*************************/
1747 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1750 assert(strcmp(*p++, "command_name") == 0);
1751 assert(strcmp(*p++, "--verbose") == 0);
1752 assert(strcmp(*p++, "--create=c") == 0);
1753 assert(strcmp(*p++, "files...") == 0);
1754 assert(strcmp(*p++, "--delete") == 0);
1755 assert(strcmp(*p++, "d") == 0);
1756 assert(strcmp(*p++, "--") == 0);
1757 assert(strcmp(*p++, "--change") == 0);
1761 assert(option_index == 0);
1762 assert(optind == 2);
1763 assert(optarg == 0);
1764 assert(optopt == 0);
1766 /*************************/
1767 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1770 assert(strcmp(*p++, "command_name") == 0);
1771 assert(strcmp(*p++, "--verbose") == 0);
1772 assert(strcmp(*p++, "--create=c") == 0);
1773 assert(strcmp(*p++, "files...") == 0);
1774 assert(strcmp(*p++, "--delete") == 0);
1775 assert(strcmp(*p++, "d") == 0);
1776 assert(strcmp(*p++, "--") == 0);
1777 assert(strcmp(*p++, "--change") == 0);
1781 assert(option_index == 5);
1782 assert(optind == 3);
1783 assert(optarg == argv[2]+9);
1784 assert(optopt == 0);
1786 /*************************/
1787 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1790 assert(strcmp(*p++, "command_name") == 0);
1791 assert(strcmp(*p++, "--verbose") == 0);
1792 assert(strcmp(*p++, "--create=c") == 0);
1793 assert(strcmp(*p++, "files...") == 0);
1794 assert(strcmp(*p++, "--delete") == 0);
1795 assert(strcmp(*p++, "d") == 0);
1796 assert(strcmp(*p++, "--") == 0);
1797 assert(strcmp(*p++, "--change") == 0);
1801 assert(option_index == 4);
1802 assert(optind == 6);
1803 assert(optarg == argv[5]);
1804 assert(optopt == 0);
1806 /*************************/
1807 c = call_getopt_long(argc, argv, "abc::d::", long_options, &option_index);
1810 assert(strcmp(*p++, "command_name") == 0);
1811 assert(strcmp(*p++, "--verbose") == 0);
1812 assert(strcmp(*p++, "--create=c") == 0);
1813 assert(strcmp(*p++, "--delete") == 0);
1814 assert(strcmp(*p++, "d") == 0);
1815 assert(strcmp(*p++, "--") == 0);
1816 assert(strcmp(*p++, "files...") == 0);
1817 assert(strcmp(*p++, "--change") == 0);
1821 assert(option_index == 4);
1822 assert(optind == 6);
1823 assert(optarg == 0);
1824 assert(optopt == 0);
1835 argc++; *p++ = "command_name";
1836 argc++; *p++ = "-o5";
1837 argc++; *p++ = "files...";
1840 /*************************/
1841 c = call_getopt_long(argc, argv, "o[567]", long_options, &option_index);
1844 assert(strcmp(*p++, "command_name") == 0);
1845 assert(strcmp(*p++, "-o5") == 0);
1846 assert(strcmp(*p++, "files...") == 0);
1850 assert(option_index == 4); /* no changed */
1851 assert(optind == 2);
1852 assert(optarg == argv[1]+2);
1853 assert(optopt == 0);
1855 /*************************/
1856 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1859 assert(strcmp(*p++, "command_name") == 0);
1860 assert(strcmp(*p++, "-o5") == 0);
1861 assert(strcmp(*p++, "files...") == 0);
1865 assert(option_index == 4); /* no changed */
1866 assert(optind == 2);
1867 assert(optarg == 0);
1868 assert(optopt == 0);
1879 argc++; *p++ = "command_name";
1880 argc++; *p++ = "-a";
1881 argc++; *p++ = "-ccd";
1882 argc++; *p++ = "-ce";
1883 argc++; *p++ = "-d";
1885 argc++; *p++ = "-cdd";
1886 argc++; *p++ = "-d";
1889 /*************************/
1890 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1893 assert(strcmp(*p++, "command_name") == 0);
1894 assert(strcmp(*p++, "-a") == 0);
1895 assert(strcmp(*p++, "-ccd") == 0);
1896 assert(strcmp(*p++, "-ce") == 0);
1897 assert(strcmp(*p++, "-d") == 0);
1898 assert(strcmp(*p++, "d") == 0);
1899 assert(strcmp(*p++, "-cdd") == 0);
1900 assert(strcmp(*p++, "-d") == 0);
1904 assert(option_index == 4); /* no changed */
1905 assert(optind == 2);
1906 assert(optarg == 0);
1907 assert(optopt == 0);
1909 /*************************/
1910 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1913 assert(strcmp(*p++, "command_name") == 0);
1914 assert(strcmp(*p++, "-a") == 0);
1915 assert(strcmp(*p++, "-ccd") == 0);
1916 assert(strcmp(*p++, "-ce") == 0);
1917 assert(strcmp(*p++, "-d") == 0);
1918 assert(strcmp(*p++, "d") == 0);
1919 assert(strcmp(*p++, "-cdd") == 0);
1920 assert(strcmp(*p++, "-d") == 0);
1924 assert(option_index == 4); /* no changed */
1925 assert(optind == 2);
1926 assert(optarg == argv[2]+2);
1927 assert(optopt == 0);
1929 /*************************/
1930 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1933 assert(strcmp(*p++, "command_name") == 0);
1934 assert(strcmp(*p++, "-a") == 0);
1935 assert(strcmp(*p++, "-ccd") == 0);
1936 assert(strcmp(*p++, "-ce") == 0);
1937 assert(strcmp(*p++, "-d") == 0);
1938 assert(strcmp(*p++, "d") == 0);
1939 assert(strcmp(*p++, "-cdd") == 0);
1940 assert(strcmp(*p++, "-d") == 0);
1944 assert(option_index == 4); /* no changed */
1945 assert(optind == 3);
1946 assert(optarg == 0);
1947 assert(optopt == 0);
1949 /*************************/
1950 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1953 assert(strcmp(*p++, "command_name") == 0);
1954 assert(strcmp(*p++, "-a") == 0);
1955 assert(strcmp(*p++, "-ccd") == 0);
1956 assert(strcmp(*p++, "-ce") == 0);
1957 assert(strcmp(*p++, "-d") == 0);
1958 assert(strcmp(*p++, "d") == 0);
1959 assert(strcmp(*p++, "-cdd") == 0);
1960 assert(strcmp(*p++, "-d") == 0);
1964 assert(option_index == 4); /* no changed */
1965 assert(optind == 4);
1966 assert(optarg == argv[3]+2);
1967 assert(optopt == 0);
1969 /*************************/
1970 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1973 assert(strcmp(*p++, "command_name") == 0);
1974 assert(strcmp(*p++, "-a") == 0);
1975 assert(strcmp(*p++, "-ccd") == 0);
1976 assert(strcmp(*p++, "-ce") == 0);
1977 assert(strcmp(*p++, "-d") == 0);
1978 assert(strcmp(*p++, "d") == 0);
1979 assert(strcmp(*p++, "-cdd") == 0);
1980 assert(strcmp(*p++, "-d") == 0);
1984 assert(option_index == 4); /* no changed */
1985 assert(optind == 5);
1986 assert(optarg == 0);
1987 assert(optopt == 0);
1989 /*************************/
1990 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
1993 assert(strcmp(*p++, "command_name") == 0);
1994 assert(strcmp(*p++, "-a") == 0);
1995 assert(strcmp(*p++, "-ccd") == 0);
1996 assert(strcmp(*p++, "-ce") == 0);
1997 assert(strcmp(*p++, "-d") == 0);
1998 assert(strcmp(*p++, "d") == 0);
1999 assert(strcmp(*p++, "-cdd") == 0);
2000 assert(strcmp(*p++, "-d") == 0);
2004 assert(option_index == 4); /* no changed */
2005 assert(optind == 6);
2006 assert(optarg == argv[6]+2);
2007 assert(optopt == 0);
2009 /*************************/
2010 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
2013 assert(strcmp(*p++, "command_name") == 0);
2014 assert(strcmp(*p++, "-a") == 0);
2015 assert(strcmp(*p++, "-ccd") == 0);
2016 assert(strcmp(*p++, "-ce") == 0);
2017 assert(strcmp(*p++, "-d") == 0);
2018 assert(strcmp(*p++, "d") == 0);
2019 assert(strcmp(*p++, "-cdd") == 0);
2020 assert(strcmp(*p++, "-d") == 0);
2024 assert(option_index == 4); /* no changed */
2025 assert(optind == 7);
2026 assert(optarg == 0);
2027 assert(optopt == 0);
2029 /*************************/
2030 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
2033 assert(strcmp(*p++, "command_name") == 0);
2034 assert(strcmp(*p++, "-a") == 0);
2035 assert(strcmp(*p++, "-ccd") == 0);
2036 assert(strcmp(*p++, "-ce") == 0);
2037 assert(strcmp(*p++, "-d") == 0);
2038 assert(strcmp(*p++, "-cdd") == 0);
2039 assert(strcmp(*p++, "d") == 0);
2040 assert(strcmp(*p++, "-d") == 0);
2044 assert(option_index == 4); /* no changed */
2045 assert(optind == 8);
2046 assert(optarg == 0);
2047 assert(optopt == 0);
2050 /*************************/
2051 c = call_getopt_long(argc, argv, "abc[cde]d[fgh]", long_options, &option_index);
2054 assert(strcmp(*p++, "command_name") == 0);
2055 assert(strcmp(*p++, "-a") == 0);
2056 assert(strcmp(*p++, "-ccd") == 0);
2057 assert(strcmp(*p++, "-ce") == 0);
2058 assert(strcmp(*p++, "-d") == 0);
2059 assert(strcmp(*p++, "-cdd") == 0);
2060 assert(strcmp(*p++, "-d") == 0);
2061 assert(strcmp(*p++, "d") == 0);
2065 assert(option_index == 4); /* no changed */
2066 assert(optind == 7);
2067 assert(optarg == 0);
2068 assert(optopt == 0);