summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--popt.c6
-rw-r--r--test1.c4
2 files changed, 9 insertions, 1 deletions
diff --git a/popt.c b/popt.c
index 7dd453d..104623e 100644
--- a/popt.c
+++ b/popt.c
@@ -231,7 +231,7 @@ static void execCommand(poptContext con) {
static const struct poptOption * findOption(const struct poptOption * table,
const char * longName,
- const char shortName,
+ char shortName,
poptCallbackType * callback,
void ** callbackData,
int singleDash) {
@@ -239,6 +239,10 @@ static const struct poptOption * findOption(const struct poptOption * table,
const struct poptOption * opt2;
const struct poptOption * cb = NULL;
+ /* This happens when a single - is given */
+ if (singleDash && !shortName)
+ shortName = '-';
+
while (opt->longName || opt->shortName || opt->arg) {
if ((opt->argInfo & POPT_ARG_MASK) == POPT_ARG_INCLUDE_TABLE) {
opt2 = findOption(opt->arg, longName, shortName, callback,
diff --git a/test1.c b/test1.c
index 28ee269..04b0299 100644
--- a/test1.c
+++ b/test1.c
@@ -24,6 +24,7 @@ int main(int argc, char ** argv) {
int help = 0;
int usage = 0;
int shortopt = 0;
+ int singleDash = 0;
struct poptOption moreCallbackArgs[] = {
{ NULL, '\0', POPT_ARG_CALLBACK | POPT_CBFLAG_INC_DATA,
option_callback, 0, NULL },
@@ -53,6 +54,7 @@ int main(int argc, char ** argv) {
"This shouldn't show up", NULL },
{ "unused", '\0', POPT_ARG_STRING, NULL, 0,
"Unused option for help testing", "UNUSED" },
+ { NULL, '-', POPT_ARG_NONE | POPT_ARGFLAG_DOC_HIDDEN, &singleDash, 0 },
{ NULL, '\0', POPT_ARG_INCLUDE_TABLE, &moreArgs, 0, NULL },
{ NULL, '\0', POPT_ARG_INCLUDE_TABLE, &callbackArgs, 0, "Callback arguments" },
POPT_AUTOHELP
@@ -85,6 +87,8 @@ int main(int argc, char ** argv) {
fprintf(stdout, " inc: %d", inc);
if (shortopt)
fprintf(stdout, " short: %d", shortopt);
+ if (singleDash)
+ fprintf(stdout, " -", shortopt);
rest = poptGetArgs(optCon);
if (rest) {