mirror of https://gitee.com/Nocallback/glibc.git
3 changed files with 63 additions and 2 deletions
@ -0,0 +1,55 @@ |
|||
#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" |
|||
Loading…
Reference in new issue