diff options
author | wm4 <wm4@nowhere> | 2013-07-25 23:36:01 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-07-26 00:19:15 +0200 |
commit | d1d6db25c0e68338b79735016e6079335ffea12b (patch) | |
tree | e079dda71df21e5237c71e9d58d5413a5f959585 /core/command.c | |
parent | ad1641c0dab6cdd7bac52d261bcc03d81d14cc21 (diff) | |
download | mpv-d1d6db25c0e68338b79735016e6079335ffea12b.tar.bz2 mpv-d1d6db25c0e68338b79735016e6079335ffea12b.tar.xz |
command: add pseudo-property that allows you to read global options
The "options" pseudo-property allows reading global like this:
show_text ${options/name}
Where "name" maps to the option "--name". This allows retrieving option
values that are not properties. Write-access is not possible: this is
reserved for normal properties.
Note: it is possible that we'll change this again, and don't require the "options/" prefix to access options.
Diffstat (limited to 'core/command.c')
-rw-r--r-- | core/command.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/core/command.c b/core/command.c index 8d574242a2..bb8f251038 100644 --- a/core/command.c +++ b/core/command.c @@ -1567,6 +1567,31 @@ static int mp_property_alias(m_option_t *prop, int action, void *arg, return r; } +static int mp_property_options(m_option_t *prop, int action, void *arg, + MPContext *mpctx) +{ + if (action != M_PROPERTY_KEY_ACTION) + return M_PROPERTY_NOT_IMPLEMENTED; + + struct m_property_action_arg *ka = arg; + + struct m_config_option *opt = m_config_get_co(mpctx->mconfig, + bstr0(ka->key)); + if (!opt) + return M_PROPERTY_UNKNOWN; + + switch (ka->action) { + case M_PROPERTY_GET: + m_option_copy(opt->opt, ka->arg, opt->data); + return M_PROPERTY_OK; + case M_PROPERTY_GET_TYPE: + *(struct m_option *)ka->arg = *opt->opt; + return M_PROPERTY_OK; + } + + return M_PROPERTY_NOT_IMPLEMENTED; +} + // Use option-to-property-bridge. (The property and option have the same names.) #define M_OPTION_PROPERTY(name) \ {(name), mp_property_generic_option, &m_option_type_dummy, 0, 0, 0, (name)} @@ -1737,6 +1762,8 @@ static const m_option_t mp_properties[] = { M_PROPERTY_ALIAS("audio", "aid"), M_PROPERTY_ALIAS("sub", "sid"), + { "options", mp_property_options, &m_option_type_dummy }, + {0}, }; |