Code:
// A string listing valid short options letters.
const char* const short_options = "hv:";
// An array describing valid long options.
static struct option long_options[] = {
{"cmod", required_argument, 0, 10},
{"vdx", required_argument, 0, 11},
{"kx", required_argument, 0, 12},
{"vdz", required_argument, 0, 13},
{"kz", required_argument, 0, 14},
{"idx", required_argument, 0, 15},
{"ki", required_argument, 0, 16},
{"vel", required_argument, 0, 17},
{"velp", required_argument, 0, 18},
{"vels", required_argument, 0, 19},
{"intf", required_argument, 0, 20},
{"lay", required_argument, 0, 21},
{"verbose", optional_argument, 0, 22},
{"help", no_argument, 0, 'h'},
{NULL, 0, NULL, 0} // Required at end of array.
};
int option_index = 0;
while ((c = getopt_long(argc, argv, short_options, long_options, &option_index)) != -1) {
int this_option_optind = optind ? optind : 1;
switch (c) {
case 0:
printf ("option h number\n");
printf ("option %s", long_options[option_index].name);
if (optarg)
printf (" with arg %s", optarg);
printf ("\n");
break;
case 10:
printf ("cmod, option 10\n");
printf ("option cmod with value '%s'\n", optarg);
break;
case 11:
printf ("vdx, option 11\n");
printf ("option vdx with value '%s'\n", optarg);
break;
case 12:
printf ("kx, option 12\n");
printf ("option kx with value '%s'\n", optarg);
break;
case 13:
printf ("vdz, option 13\n");
printf ("option vdz with value '%s'\n", optarg);
break;
case 14:
printf ("kz, option 14\n");
printf ("option kz with value '%s'\n", optarg);
break;
case 15:
printf ("idx, option 15\n");
printf ("option idx with value '%s'\n", optarg);
break;
case 16:
printf ("ki, option 16\n");
printf ("option ki with value '%s'\n", optarg);
break;
case 17:
printf ("vel, option 17\n");
printf ("option vel with value '%s'\n", optarg);
break;
case 18:
printf ("velp, option 18\n");
printf ("option velp with value '%s'\n", optarg);
break;
case 19:
printf ("vels, option 19\n");
printf ("option vels with value '%s'\n", optarg);
break;
case 20:
printf ("intf, option 20\n");
printf ("option intf with value '%s'\n", optarg);
break;
case 21:
printf ("lay, option 21\n");
printf ("option lay with value '%s'\n", optarg);
break;
case 'a':
printf ("option a\n");
aopt = 1;
break;
case 'b':
printf ("option b\n");
bopt = 1;
break;
case 'c':
printf ("option cmod with value '%s'\n", optarg);
opt_cmod = optarg;
break;
case 'h':
print_help();
break;
case '?':
break;
default:
printf ("?? getopt returned character code 0%o ??\n", c);
}
}
// Process the remaining non-option arguments.
if (optind < argc) {
printf ("non-option ARGV-elements: ");
while (optind < argc)
printf ("%s ", argv[optind++]);
printf ("\n");
}
exit (0);