#define _GNU_SOURCE /* getopt_long */ #include #include #include #include void print_usage(FILE *output) { fprintf(output, "Usage:\n"); fprintf(output, "rpt [-n | --count COUNT] [-f | --force] COMMAND\n"); fprintf(output, "rpt [-h | --help]\n"); fprintf(output, "rpt [-V | --version]\n"); } int main(int argc, char* argv[]) { struct option const opts[] = { {"count", required_argument, NULL, 'n'}, {"force", no_argument, NULL, 'f'}, {"version", no_argument, NULL, 'V'}, {"help", no_argument, NULL, 'h'}, {NULL, 0, NULL, 0} }; opterr = 0; /* dismiss getopt error message */ int opt; char *strcount = NULL; long count; void (*handle_exit_f)(int status); while ((opt = getopt_long(argc, argv, "+:n:fVh", opts, NULL)) >= 0) { switch(opt) { case 'n': strcount = optarg; break; case 'f': case ':': fprintf(stderr, "COUNT value missing.\n"); print_usage(stderr); return 1; default: print_usage(stderr); return 1; } } return 0; }