diff options
author | Erik Troan <ewt@src.gnome.org> | 1998-10-27 05:38:38 +0000 |
---|---|---|
committer | Erik Troan <ewt@src.gnome.org> | 1998-10-27 05:38:38 +0000 |
commit | 99204a68db9ff740b150c752c1d7dd62bbebcf8f (patch) | |
tree | 2ea57c956c393b283120ac416d0767fe1de0b040 /support/popt.c | |
parent | 64abb889bd8f202bcb03e12e590c0fcd93de2d3d (diff) | |
download | shared-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.c | 13 |
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; |