summaryrefslogtreecommitdiff
path: root/support/popt.c
diff options
context:
space:
mode:
authorErik Troan <ewt@src.gnome.org>1998-10-27 05:38:38 +0000
committerErik Troan <ewt@src.gnome.org>1998-10-27 05:38:38 +0000
commit99204a68db9ff740b150c752c1d7dd62bbebcf8f (patch)
tree2ea57c956c393b283120ac416d0767fe1de0b040 /support/popt.c
parent64abb889bd8f202bcb03e12e590c0fcd93de2d3d (diff)
downloadshared-mime-info-99204a68db9ff740b150c752c1d7dd62bbebcf8f.tar.gz
implemented POPT_ARGINFO_INC_DATA
svn path=/trunk/; revision=456
Diffstat (limited to 'support/popt.c')
-rw-r--r--support/popt.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/support/popt.c b/support/popt.c
index 47f0d008..9ebc81bb 100644
--- a/support/popt.c
+++ b/support/popt.c
@@ -242,7 +242,11 @@ static const struct poptOption * findOption(const struct poptOption * table,
if ((opt->argInfo & POPT_ARG_MASK) == POPT_ARG_INCLUDE_TABLE) {
opt2 = findOption(opt->arg, longName, shortName, callback,
callbackData, singleDash);
- if (opt2) return opt2;
+ if (opt2) {
+ if (*callback && !*callbackData)
+ *callbackData = opt->descrip;
+ return opt2;
+ }
} else if ((opt->argInfo & POPT_ARG_MASK) == POPT_ARG_CALLBACK) {
cb = opt;
} else if (longName && opt->longName &&
@@ -256,11 +260,12 @@ static const struct poptOption * findOption(const struct poptOption * table,
}
if (!opt->longName && !opt->shortName) return NULL;
+ *callbackData = NULL;
+ *callback = NULL;
if (cb) {
*callback = cb->arg;
- *callbackData = cb->descrip;
- } else {
- *callback = NULL;
+ if (!(cb->argInfo & POPT_CBFLAG_INC_DATA))
+ *callbackData = cb->descrip;
}
return opt;