Make cmdutils.c:parse_options accept as argument a function to parse
authorStefano Sabatini <stefano.sabatini-lala@poste.it>
Mon, 13 Aug 2007 23:03:36 +0000 (23:03 +0000)
committerDiego Biurrun <diego@biurrun.de>
Mon, 13 Aug 2007 23:03:36 +0000 (23:03 +0000)
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

cmdutils.c
cmdutils.h
ffmpeg.c
ffplay.c

index 1c2f44ef3c2d6610229ddadb59135c6cdfa2e263..a436031d3fd087105b548cbc2a2186c21f21e940 100644 (file)
@@ -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);
         }
     }
 }
index 13a61c09df96eea556810114f9ac5ab3412a5453..eb94058888ec066ae2025ee7dbebfa9bfb2412b3 100644 (file)
@@ -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 */
index 33c49fafd2530765486d849ae6b81677ae883f3b..6c8751a8f7c49837498547f3b3fadba6bb3df2f9 100644 (file)
--- 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) {
index 5d0ff1c7bfa16d2d2b66c4779e88353c7b01afc7..57dcf2f6e5d36c008bc053d5d2ebe1e1aec25fd1 100644 (file)
--- 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();