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