56 lines
1.0 KiB
C
56 lines
1.0 KiB
C
#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"
|