diff options
author | wm4 <wm4@nowhere> | 2014-02-24 21:18:53 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-02-24 22:50:24 +0100 |
commit | 4d1575173b64b7a95f7cf9626956aebafdbc103f (patch) | |
tree | 9e8260eae1b5796c92392eb1d4a0b52f4417130b /options | |
parent | 38a36fd7ea4a4d9bd4f8ea659f846b7d8784e27b (diff) | |
download | mpv-4d1575173b64b7a95f7cf9626956aebafdbc103f.tar.bz2 mpv-4d1575173b64b7a95f7cf9626956aebafdbc103f.tar.xz |
command: make options property return the list of all options
Diffstat (limited to 'options')
-rw-r--r-- | options/m_config.c | 20 | ||||
-rw-r--r-- | options/m_config.h | 3 |
2 files changed, 23 insertions, 0 deletions
diff --git a/options/m_config.c b/options/m_config.c index d2b75389fe..f2cb8ce98f 100644 --- a/options/m_config.c +++ b/options/m_config.c @@ -708,6 +708,26 @@ void m_config_print_option_list(const struct m_config *config) MP_INFO(config, "\nTotal: %d options\n", count); } +char **m_config_list_options(void *ta_parent, const struct m_config *config) +{ + char **list = talloc_new(ta_parent); + int count = 0; + for (int i = 0; i < config->num_opts; i++) { + struct m_config_option *co = &config->opts[i]; + const struct m_option *opt = co->opt; + if (opt->type->flags & M_OPT_TYPE_HAS_CHILD) + continue; + if (co->is_generated) + continue; + // For use with CONF_TYPE_STRING_LIST, it's important not to set list + // as allocation parent. + char *s = talloc_strdup(ta_parent, co->name); + MP_TARRAY_APPEND(ta_parent, list, count, s); + } + MP_TARRAY_APPEND(ta_parent, list, count, NULL); + return list; +} + struct m_profile *m_config_get_profile(const struct m_config *config, bstr name) { for (struct m_profile *p = config->profiles; p; p = p->next) { diff --git a/options/m_config.h b/options/m_config.h index 82382aaa27..632ba09e77 100644 --- a/options/m_config.h +++ b/options/m_config.h @@ -170,6 +170,9 @@ const char *m_config_get_positional_option(const struct m_config *config, int n) // Returns: error code (<0), or number of expected params (0, 1) int m_config_option_requires_param(struct m_config *config, bstr name); +// Return all (visible) option names as NULL terminated string list. +char **m_config_list_options(void *ta_parent, const struct m_config *config); + /* Print a list of all registered options. * \param config The config object. */ |