mirror of
https://github.com/nyanmisaka/ffmpeg-rockchip.git
synced 2025-10-27 19:02:13 +08:00
fftools: handle errors in parse_options()
This commit is contained in:
@@ -364,8 +364,8 @@ int parse_option(void *optctx, const char *opt, const char *arg,
|
|||||||
return !!(po->flags & HAS_ARG);
|
return !!(po->flags & HAS_ARG);
|
||||||
}
|
}
|
||||||
|
|
||||||
void parse_options(void *optctx, int argc, char **argv, const OptionDef *options,
|
int parse_options(void *optctx, int argc, char **argv, const OptionDef *options,
|
||||||
void (*parse_arg_function)(void *, const char*))
|
int (*parse_arg_function)(void *, const char*))
|
||||||
{
|
{
|
||||||
const char *opt;
|
const char *opt;
|
||||||
int optindex, handleoptions = 1, ret;
|
int optindex, handleoptions = 1, ret;
|
||||||
@@ -386,13 +386,18 @@ void parse_options(void *optctx, int argc, char **argv, const OptionDef *options
|
|||||||
opt++;
|
opt++;
|
||||||
|
|
||||||
if ((ret = parse_option(optctx, opt, argv[optindex], options)) < 0)
|
if ((ret = parse_option(optctx, opt, argv[optindex], options)) < 0)
|
||||||
exit_program(1);
|
return ret;
|
||||||
optindex += ret;
|
optindex += ret;
|
||||||
} else {
|
} else {
|
||||||
if (parse_arg_function)
|
if (parse_arg_function) {
|
||||||
parse_arg_function(optctx, opt);
|
ret = parse_arg_function(optctx, opt);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int parse_optgroup(void *optctx, OptionGroup *g)
|
int parse_optgroup(void *optctx, OptionGroup *g)
|
||||||
|
|||||||
@@ -194,8 +194,8 @@ void show_help_default(const char *opt, const char *arg);
|
|||||||
* argument without a leading option name flag. NULL if such arguments do
|
* argument without a leading option name flag. NULL if such arguments do
|
||||||
* not have to be processed.
|
* not have to be processed.
|
||||||
*/
|
*/
|
||||||
void parse_options(void *optctx, int argc, char **argv, const OptionDef *options,
|
int parse_options(void *optctx, int argc, char **argv, const OptionDef *options,
|
||||||
void (* parse_arg_function)(void *optctx, const char*));
|
int (* parse_arg_function)(void *optctx, const char*));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse one given option.
|
* Parse one given option.
|
||||||
|
|||||||
@@ -3501,17 +3501,19 @@ static int opt_show_mode(void *optctx, const char *opt, const char *arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void opt_input_file(void *optctx, const char *filename)
|
static int opt_input_file(void *optctx, const char *filename)
|
||||||
{
|
{
|
||||||
if (input_filename) {
|
if (input_filename) {
|
||||||
av_log(NULL, AV_LOG_FATAL,
|
av_log(NULL, AV_LOG_FATAL,
|
||||||
"Argument '%s' provided as input filename, but '%s' was already specified.\n",
|
"Argument '%s' provided as input filename, but '%s' was already specified.\n",
|
||||||
filename, input_filename);
|
filename, input_filename);
|
||||||
exit(1);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
if (!strcmp(filename, "-"))
|
if (!strcmp(filename, "-"))
|
||||||
filename = "fd:";
|
filename = "fd:";
|
||||||
input_filename = filename;
|
input_filename = filename;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int opt_codec(void *optctx, const char *opt, const char *arg)
|
static int opt_codec(void *optctx, const char *opt, const char *arg)
|
||||||
@@ -3630,7 +3632,7 @@ void show_help_default(const char *opt, const char *arg)
|
|||||||
/* Called from the main */
|
/* Called from the main */
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int flags;
|
int flags, ret;
|
||||||
VideoState *is;
|
VideoState *is;
|
||||||
|
|
||||||
init_dynload();
|
init_dynload();
|
||||||
@@ -3649,7 +3651,9 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
show_banner(argc, argv, options);
|
show_banner(argc, argv, options);
|
||||||
|
|
||||||
parse_options(NULL, argc, argv, options, opt_input_file);
|
ret = parse_options(NULL, argc, argv, options, opt_input_file);
|
||||||
|
if (ret < 0)
|
||||||
|
exit(1);
|
||||||
|
|
||||||
if (!input_filename) {
|
if (!input_filename) {
|
||||||
show_usage();
|
show_usage();
|
||||||
|
|||||||
@@ -3770,17 +3770,19 @@ static int opt_show_entries(void *optctx, const char *opt, const char *arg)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void opt_input_file(void *optctx, const char *arg)
|
static int opt_input_file(void *optctx, const char *arg)
|
||||||
{
|
{
|
||||||
if (input_filename) {
|
if (input_filename) {
|
||||||
av_log(NULL, AV_LOG_ERROR,
|
av_log(NULL, AV_LOG_ERROR,
|
||||||
"Argument '%s' provided as input filename, but '%s' was already specified.\n",
|
"Argument '%s' provided as input filename, but '%s' was already specified.\n",
|
||||||
arg, input_filename);
|
arg, input_filename);
|
||||||
exit_program(1);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
if (!strcmp(arg, "-"))
|
if (!strcmp(arg, "-"))
|
||||||
arg = "fd:";
|
arg = "fd:";
|
||||||
input_filename = arg;
|
input_filename = arg;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int opt_input_file_i(void *optctx, const char *opt, const char *arg)
|
static int opt_input_file_i(void *optctx, const char *opt, const char *arg)
|
||||||
@@ -4121,7 +4123,9 @@ int main(int argc, char **argv)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
show_banner(argc, argv, options);
|
show_banner(argc, argv, options);
|
||||||
parse_options(NULL, argc, argv, options, opt_input_file);
|
ret = parse_options(NULL, argc, argv, options, opt_input_file);
|
||||||
|
if (ret < 0)
|
||||||
|
exit_program(1);
|
||||||
|
|
||||||
if (do_show_log)
|
if (do_show_log)
|
||||||
av_log_set_callback(log_callback);
|
av_log_set_callback(log_callback);
|
||||||
|
|||||||
Reference in New Issue
Block a user