|  | #include <argp.h> | 
|  | #include <stdio.h> | 
|  | #include <stdlib.h> | 
|  |  | 
|  | static struct argp_option argp_options[] = { | 
|  | { "dstaddr", 'd', "ADDR", 0, | 
|  | "set destination (peer) address to ADDR" }, | 
|  | { "peer", 'p', "ADDR", OPTION_ALIAS }, | 
|  | { NULL } | 
|  | }; | 
|  |  | 
|  | static error_t parse_opt (int key, char *arg, struct argp_state *state); | 
|  |  | 
|  | static struct argp argp = | 
|  | { | 
|  | argp_options, parse_opt | 
|  | }; | 
|  |  | 
|  | static int cnt; | 
|  |  | 
|  | static int | 
|  | do_test (int argc, char *argv[]) | 
|  | { | 
|  | int remaining; | 
|  | argp_parse (&argp, argc, argv, 0, &remaining, NULL); | 
|  | return cnt != 4; | 
|  | } | 
|  |  | 
|  | static error_t | 
|  | parse_opt (int key, char *arg, struct argp_state *state) | 
|  | { | 
|  | switch (key) | 
|  | { | 
|  | case 'd': | 
|  | case 'p': | 
|  | printf ("got '%c' with argument '%s'\n", key, arg); | 
|  | ++cnt; | 
|  | break; | 
|  | case 0: | 
|  | case ARGP_KEY_END: | 
|  | case ARGP_KEY_NO_ARGS: | 
|  | case ARGP_KEY_INIT: | 
|  | case ARGP_KEY_SUCCESS: | 
|  | case ARGP_KEY_FINI: | 
|  | // Ignore. | 
|  | return ARGP_ERR_UNKNOWN; | 
|  | default: | 
|  | printf ("invalid key '%x'\n", key); | 
|  | exit (1); | 
|  | } | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | #define TEST_FUNCTION do_test (argc, argv) | 
|  | #include "../test-skeleton.c" |