blob: 6c019b7e438c1c448cdc5d6209a4249a433966e8 [file] [log] [blame]
/*
* getoptlong.c
*
* Simple test for getopt_long, set the environment variable GETOPTTEST
* to give the argument string to getopt()
*/
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <getopt.h>
static int foo = 0;
static const struct option long_options[] = {
{ "first", 1, NULL, 'f' },
{ "second", 0, NULL, 's' },
{ "third", 2, NULL, '3' },
{ "fourth", 0, NULL, 4 },
{ "set-foo", 0, &foo, 1 },
{ NULL, 0, NULL, 0 }
};
int main(int argc, char *const *argv)
{
const char *parser;
const char *showchar;
char one_char[] = "\'?\'";
char num_buf[16];
int c;
int longindex;
parser = getenv("GETOPTTEST");
if (!parser)
parser = "abzf:o:";
do {
c = getopt_long(argc, argv, parser, long_options, &longindex);
if (c == EOF) {
showchar = "EOF";
} else if (c >= 32 && c <= 126) {
one_char[1] = c;
showchar = one_char;
} else {
snprintf(num_buf, sizeof num_buf, "%d", c);
showchar = num_buf;
}
printf("c = %s, optind = %d (\"%s\"), optarg = \"%s\", "
"optopt = \'%c\', foo = %d, longindex = %d\n",
showchar, optind, argv[optind],
optarg, optopt, foo, longindex);
} while (c != -1);
return 0;
}