summaryrefslogtreecommitdiff
path: root/cmdutils.c
diff options
context:
space:
mode:
authorBenoit Fouet <benoit.fouet@free.fr>2009-08-03 09:24:39 +0000
committerBenoit Fouet <benoit.fouet@free.fr>2009-08-03 09:24:39 +0000
commitb1d6e5e8aded3ec7682e27f9b8fe83539da96c12 (patch)
tree429b3fe5c0828c6cfa5bc2a10cca80f4eab9b130 /cmdutils.c
parent33ae681f5ca9fa9aae82081dd6a6edbe2509f983 (diff)
Handle noX for OPT_BOOL X.
Originally committed as revision 19572 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'cmdutils.c')
-rw-r--r--cmdutils.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/cmdutils.c b/cmdutils.c
index e8de2f36ab..c2e7d064b1 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -125,11 +125,19 @@ void parse_options(int argc, char **argv, const OptionDef *options,
opt = argv[optindex++];
if (handleoptions && opt[0] == '-' && opt[1] != '\0') {
+ int bool_val = 1;
if (opt[1] == '-' && opt[2] == '\0') {
handleoptions = 0;
continue;
}
po= find_option(options, opt + 1);
+ if (!po->name && opt[1] == 'n' && opt[2] == 'o') {
+ /* handle 'no' bool option */
+ po = find_option(options, opt + 3);
+ if (!(po->name && (po->flags & OPT_BOOL)))
+ goto unknown_opt;
+ bool_val = 0;
+ }
if (!po->name)
po= find_option(options, "default");
if (!po->name) {
@@ -150,7 +158,7 @@ unknown_opt:
str = av_strdup(arg);
*po->u.str_arg = str;
} else if (po->flags & OPT_BOOL) {
- *po->u.int_arg = 1;
+ *po->u.int_arg = bool_val;
} else if (po->flags & OPT_INT) {
*po->u.int_arg = parse_number_or_die(opt+1, arg, OPT_INT64, INT_MIN, INT_MAX);
} else if (po->flags & OPT_INT64) {