diff options
author | Benoit Fouet <benoit.fouet@free.fr> | 2009-08-03 09:24:39 +0000 |
---|---|---|
committer | Benoit Fouet <benoit.fouet@free.fr> | 2009-08-03 09:24:39 +0000 |
commit | b1d6e5e8aded3ec7682e27f9b8fe83539da96c12 (patch) | |
tree | 429b3fe5c0828c6cfa5bc2a10cca80f4eab9b130 /cmdutils.c | |
parent | 33ae681f5ca9fa9aae82081dd6a6edbe2509f983 (diff) | |
download | ffmpeg-b1d6e5e8aded3ec7682e27f9b8fe83539da96c12.tar.gz |
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.c | 10 |
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) { |