[FFmpeg-devel] [PATCH 1/2] cmdutils: Add -buildconf option.

Stephen Hutchinson qyot27 at gmail.com
Tue Nov 19 13:35:39 CET 2013


On Sun, Aug 11, 2013 at 12:17 PM, Stephen Hutchinson <qyot27 at gmail.com> wrote:
> The output is formatted to display one option per line.
> ---
>  cmdutils.c             | 34 ++++++++++++++++++++++++++++++++++
>  cmdutils.h             |  7 +++++++
>  cmdutils_common_opts.h |  1 +
>  3 files changed, 42 insertions(+)
>
> diff --git a/cmdutils.c b/cmdutils.c
> index 6eb093d..43ea21c 100644
> --- a/cmdutils.c
> +++ b/cmdutils.c
> @@ -1066,6 +1066,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");
> @@ -1086,6 +1112,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 3af4476..4d5d2f4 100644
> --- a/cmdutils.h
> +++ b/cmdutils.h
> @@ -412,6 +412,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 b57abaf..48b0af2 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" },
> --
> 1.8.1.2
>

Ping.  This seemed to have gotten passed over when the character limit
issue was fixed, but I still think this is worth having.  The patch as
posted in August does still apply cleanly to master.


More information about the ffmpeg-devel mailing list