diff --git a/cmdutils.c b/cmdutils.c index 1c2f44ef3c..a436031d3f 100644 --- a/cmdutils.c +++ b/cmdutils.c @@ -61,7 +61,8 @@ static const OptionDef* find_option(const OptionDef *po, const char *name){ return po; } -void parse_options(int argc, char **argv, const OptionDef *options) +void parse_options(int argc, char **argv, const OptionDef *options, + void (* parse_arg_function)(const char*)) { const char *opt, *arg; int optindex, handleoptions=1; @@ -112,7 +113,8 @@ unknown_opt: po->u.func_arg(arg); } } else { - parse_arg_file(opt); + if (parse_arg_function) + parse_arg_function(opt); } } } diff --git a/cmdutils.h b/cmdutils.h index 13a61c09df..eb94058888 100644 --- a/cmdutils.h +++ b/cmdutils.h @@ -50,8 +50,18 @@ typedef struct { } OptionDef; void show_help_options(const OptionDef *options, const char *msg, int mask, int value); -void parse_options(int argc, char **argv, const OptionDef *options); -void parse_arg_file(const char *filename); + +/** + * Parses the command line arguments. + * @param options Array with the definitions required to interpret every + * option of the form: - [] + * @param parse_arg_function Name of the function called to process every + * argument without a leading option name flag. NULL if such arguments do + * not have to be processed. + */ +void parse_options(int argc, char **argv, const OptionDef *options, + void (* parse_arg_function)(const char*)); + void print_error(const char *filename, int err); #endif /* _CMD_UTILS_H */ diff --git a/ffmpeg.c b/ffmpeg.c index 33c49fafd2..6c8751a8f7 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -3806,11 +3806,6 @@ static void show_help(void) av_opt_show(sws_opts, NULL); } -void parse_arg_file(const char *filename) -{ - opt_output_file(filename); -} - int main(int argc, char **argv) { int i; @@ -3831,7 +3826,7 @@ int main(int argc, char **argv) } /* parse options */ - parse_options(argc, argv, options); + parse_options(argc, argv, options, opt_output_file); /* file converter / grab */ if (nb_output_files <= 0) { diff --git a/ffplay.c b/ffplay.c index 5d0ff1c7bf..57dcf2f6e5 100644 --- a/ffplay.c +++ b/ffplay.c @@ -2530,7 +2530,7 @@ int main(int argc, char **argv) /* register all codecs, demux and protocols */ av_register_all(); - parse_options(argc, argv, options); + parse_options(argc, argv, options, parse_arg_file); if (!input_filename) { show_help();