summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libshouldbeinlibc/argp-test.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/libshouldbeinlibc/argp-test.c b/libshouldbeinlibc/argp-test.c
index 70c7eb58..378aff86 100644
--- a/libshouldbeinlibc/argp-test.c
+++ b/libshouldbeinlibc/argp-test.c
@@ -52,7 +52,7 @@ the current process)"},
{0}
};
-static const char args_doc[] = "STRING...";
+static const char args_doc[] = "STRING...\n-";
static const char doc[] = "Test program for argp.";
static error_t
@@ -61,9 +61,15 @@ parse_opt (int key, char *arg, struct argp_state *state)
switch (key)
{
case ARGP_KEY_NO_ARGS:
- printf ("NO ARGS\n"); break;
+ printf ("NO ARGS\n");
+ break;
case ARGP_KEY_ARG:
- printf ("ARG: %s\n", arg); break;
+ if (state->arg_num == 0 && strcmp (arg, "-") == 0
+ && state->next < state->argc)
+ argp_usage (state);
+ printf ("ARG: %s\n", arg);
+ break;
+
case 'p': case 'P': case OPT_PGRP: case 'x': case 'Q':
case 'r': case OPT_SESS:
{
@@ -76,8 +82,9 @@ parse_opt (int key, char *arg, struct argp_state *state)
printf ("KEY %s: %s\n", buf, arg);
else
printf ("KEY %s\n", buf);
- break;
}
+ break;
+
default:
return ARGP_ERR_UNKNOWN;
}