diff options
author | Stephen Hutchinson <qyot27@gmail.com> | 2013-08-11 12:17:57 -0400 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-11-19 22:09:48 +0100 |
commit | 69cf626f9c1ba29e66ff62e2b835dcfc3031db8d (patch) | |
tree | 0e0497a8d16597be564c76628179e1bf0993a966 | |
parent | d5d29ae3b0375320a7a34f85a5a90e8362550dbb (diff) | |
download | ffmpeg-69cf626f9c1ba29e66ff62e2b835dcfc3031db8d.tar.gz |
cmdutils: Add -buildconf option.
The output is formatted to display one option per line.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | cmdutils.c | 34 | ||||
-rw-r--r-- | cmdutils.h | 7 | ||||
-rw-r--r-- | cmdutils_common_opts.h | 1 |
3 files changed, 42 insertions, 0 deletions
diff --git a/cmdutils.c b/cmdutils.c index b10a552243..e9545fe080 100644 --- a/cmdutils.c +++ b/cmdutils.c @@ -1079,6 +1079,32 @@ static void print_program_info(int flags, int level) av_log(NULL, level, "%sconfiguration: " FFMPEG_CONFIGURATION "\n", indent); } +static void print_buildconf(int flags, int level) +{ + const char *indent = flags & INDENT? " " : ""; + char str[] = { FFMPEG_CONFIGURATION }; + char *conflist, *remove_tilde, *splitconf; + + // Change all the ' --' strings to '~--' so that + // they can be identified as tokens. + while( (conflist = strstr(str, " --")) != NULL ) { + strncpy(conflist, "~--", 3); + } + + // Compensate for the weirdness this would cause + // when passing 'pkg-config --static'. + while( (remove_tilde = strstr(str, "pkg-config~")) != NULL ) { + strncpy(remove_tilde, "pkg-config ",11); + } + + splitconf = strtok(str, "~"); + av_log(NULL, level, "\n%sconfiguration:\n",indent); + while(splitconf != NULL) { + av_log(NULL, level, "%s%s%s\n", indent, indent, splitconf); + splitconf = strtok(NULL, "~"); + } +} + void show_banner(int argc, char **argv, const OptionDef *options) { int idx = locate_option(argc, argv, options, "version"); @@ -1099,6 +1125,14 @@ int show_version(void *optctx, const char *opt, const char *arg) return 0; } +int show_buildconf(void *optctx, const char *opt, const char *arg) +{ + av_log_set_callback(log_callback_help); + print_buildconf (INDENT|0, AV_LOG_INFO); + + return 0; +} + int show_license(void *optctx, const char *opt, const char *arg) { #if CONFIG_NONFREE diff --git a/cmdutils.h b/cmdutils.h index 2d2afc8223..ce6660aa4c 100644 --- a/cmdutils.h +++ b/cmdutils.h @@ -415,6 +415,13 @@ void show_banner(int argc, char **argv, const OptionDef *options); int show_version(void *optctx, const char *opt, const char *arg); /** + * Print the build configuration of the program to stdout. The contents + * depend on the definition of FFMPEG_CONFIGURATION. + * This option processing function does not utilize the arguments. + */ +int show_buildconf(void *optctx, const char *opt, const char *arg); + +/** * Print the license of the program to stdout. The license depends on * the license of the libraries compiled into the program. * This option processing function does not utilize the arguments. diff --git a/cmdutils_common_opts.h b/cmdutils_common_opts.h index 69663039e0..3e3f0ac5c8 100644 --- a/cmdutils_common_opts.h +++ b/cmdutils_common_opts.h @@ -4,6 +4,7 @@ { "help" , OPT_EXIT, {.func_arg = show_help}, "show help", "topic" }, { "-help" , OPT_EXIT, {.func_arg = show_help}, "show help", "topic" }, { "version" , OPT_EXIT, {.func_arg = show_version}, "show version" }, + { "buildconf" , OPT_EXIT, {.func_arg = show_buildconf}, "show build configuration" }, { "formats" , OPT_EXIT, {.func_arg = show_formats }, "show available formats" }, { "codecs" , OPT_EXIT, {.func_arg = show_codecs }, "show available codecs" }, { "decoders" , OPT_EXIT, {.func_arg = show_decoders }, "show available decoders" }, |