summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano Sabatini <stefano.sabatini-lala@poste.it>2007-08-13 23:03:36 +0000
committerDiego Biurrun <diego@biurrun.de>2007-08-13 23:03:36 +0000
commit60a9966e4d96ca26ceabdaf99eacfb0872c4e931 (patch)
tree8f8337270ddeeb6f17b527ad9e1cbc8301f76b4a
parent9c0edaaf1359b4eeb26870c74c3a00dfd026de67 (diff)
downloadffmpeg-60a9966e4d96ca26ceabdaf99eacfb0872c4e931.tar.gz
Make cmdutils.c:parse_options accept as argument a function to parse
bare command line parameters. patch by Stefano Sabatini, stefano.sabatini-lala poste it Originally committed as revision 10112 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--cmdutils.c6
-rw-r--r--cmdutils.h14
-rw-r--r--ffmpeg.c7
-rw-r--r--ffplay.c2
4 files changed, 18 insertions, 11 deletions
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: -<option_name> [<argument>]
+ * @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();