mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-30 10:45:40 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			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"
 |