* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#ifndef _CMD_UTILS_H
-#define _CMD_UTILS_H
+#ifndef CMD_UTILS_H
+#define CMD_UTILS_H
typedef struct {
const char *name;
#define OPT_FLOAT 0x0100
#define OPT_SUBTITLE 0x0200
#define OPT_FUNC2 0x0400
+#define OPT_INT64 0x0800
union {
void (*func_arg)(const char *); //FIXME passing error code as int return would be nicer then exit() in the func
int *int_arg;
char **str_arg;
float *float_arg;
int (*func2_arg)(const char *, const char *);
+ int64_t *int64_arg;
} u;
const char *help;
const char *argname;
} 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 */
+/**
+ * Prints the banner of the program on stderr. The banner message
+ * depends on the current versions of the repository and of the libav*
+ * libraries.
+ * @param program_name Name of the program.
+ * @param program_birth_year Year of birth of the program.
+ */
+void show_banner(const char *program_name, int program_birth_year);
+
+/**
+ * Prints the version of the program on stdout. The version message
+ * depends on the current versions of the repository and of the libav*
+ * libraries.
+ * @param program_name Name of the program.
+ */
+void show_version(const char *program_name);
+
+/**
+ * Prints on stdout the license of the program, which depends on the license of
+ * the compiled libav* libraries.
+ */
+void show_license(void);
+
+#endif /* CMD_UTILS_H */