/* Copyright (C) 2008 Emmanuel Varoquaux
This file is part of XOS.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see . */
#include "getopt.h"
#include
#include
#include
int main(int argc, char **argv)
{
static int flag;
static struct option longopts[] = {
{"help", no_argument, NULL, 'h'},
{"arg", required_argument, &flag, 'a'},
{"opt", optional_argument, &flag, 'o'},
{"he", no_argument, &flag, 'h'},
{"hey", no_argument, &flag, 'h'},
{"u", no_argument, &flag, 'h'},
{0, 0, 0, 0}
};
int longindex;
int c;
int i;
printf("options:\n");
while ((c = getopt_long(argc, argv, "abc:d::e", longopts, &longindex)) != -1)
switch (c) {
case 0:
switch (flag) {
case 'a':
printf(" %s %s\n", longopts[longindex].name, optarg);
break;
case 'h':
printf(" %s\n", longopts[longindex].name);
break;
case 'o':
if (optarg)
printf(" %s %s\n", longopts[longindex].name, optarg);
else
printf(" %s (no argument)\n", longopts[longindex].name);
break;
default:
error(EXIT_FAILURE, 0, "Unexpected option: %c", c);
}
break;
case 1:
printf(" \\1 %s\n", optarg);
break;
case 'a':
case 'b':
case 'e':
case 'h':
printf(" %c\n", c);
break;
case 'c':
printf(" %c %s\n", c, optarg);
break;
case 'd':
if (optarg)
printf(" %c %s\n", c, optarg);
else
printf(" %c (no argument)\n", c);
break;
case ':':
printf(" %c (missing argument)\n", optopt);
break;
case '?':
printf(" (illegal option %c)\n", optopt);
break;
default:
error(EXIT_FAILURE, 0, "Unexpected option: %c", c);
}
printf("\n");
printf("arguments:\n");
while (optind < argc)
printf(" %s\n", argv[optind++]);
printf("\n");
printf("argv:\n");
i = 0;
while (argv[i])
printf("%s ", argv[i++]);
printf("\n");
return EXIT_SUCCESS;
}