1 #include <argp.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4
5 static struct argp_option argp_options[] = {
6 { "dstaddr", 'd', "ADDR", 0,
7 "set destination (peer) address to ADDR" },
8 { "peer", 'p', "ADDR", OPTION_ALIAS },
9 { NULL }
10 };
11
12 static error_t parse_opt (int key, char *arg, struct argp_state *state);
13
14 static struct argp argp =
15 {
16 argp_options, parse_opt
17 };
18
19 static int cnt;
20
21 static int
do_test(int argc,char * argv[])22 do_test (int argc, char *argv[])
23 {
24 int remaining;
25 argp_parse (&argp, argc, argv, 0, &remaining, NULL);
26 return cnt != 4;
27 }
28
29 static error_t
parse_opt(int key,char * arg,struct argp_state * state)30 parse_opt (int key, char *arg, struct argp_state *state)
31 {
32 switch (key)
33 {
34 case 'd':
35 case 'p':
36 printf ("got '%c' with argument '%s'\n", key, arg);
37 ++cnt;
38 break;
39 case 0:
40 case ARGP_KEY_END:
41 case ARGP_KEY_NO_ARGS:
42 case ARGP_KEY_INIT:
43 case ARGP_KEY_SUCCESS:
44 case ARGP_KEY_FINI:
45 // Ignore.
46 return ARGP_ERR_UNKNOWN;
47 default:
48 printf ("invalid key '%x'\n", key);
49 exit (1);
50 }
51 return 0;
52 }
53
54 #define TEST_FUNCTION do_test (argc, argv)
55 #include "../test-skeleton.c"
56