1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
#define _GNU_SOURCE /* getopt_long */
#include <getopt.h>
#include <stdio.h>
#include <sys/wait.h>
#include <unistd.h>
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;
}
|