Blame argp/bug-argp2.c

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