commands: allow printing raw properties

Extend m_properties_expand_string() so that it can print properties as
unformatted string. Normally, properties will be pretty-printed
(intended for OSD and user interface purposes). Add the '=' modifier to
the format string syntax that disables pretty-printing and returns them
"raw".

For example, "${=switch_audio}" will print the track number, instead of
returning an OSD friendly string containing additional information like
track title and language.
This commit is contained in:
wm4 2012-09-12 12:12:27 +02:00
parent 416c03417e
commit b248692034
1 changed files with 9 additions and 4 deletions

View File

@ -160,12 +160,17 @@ char *m_properties_expand_string(const m_option_t *prop_list, char *str,
lvl--, str++, l = 0;
} else if (str[0] == '$' && str[1] == '{'
&& (e = strchr(str + 2, '}'))) {
int pl = e - str - 2;
str += 2;
int method = M_PROPERTY_PRINT;
if (str[0] == '=') {
str += 1;
method = M_PROPERTY_TO_STRING;
}
int pl = e - str;
char pname[pl + 1];
memcpy(pname, str + 2, pl);
memcpy(pname, str, pl);
pname[pl] = 0;
if (m_property_do(prop_list, pname,
M_PROPERTY_PRINT, &p, ctx) >= 0 && p)
if (m_property_do(prop_list, pname, method, &p, ctx) >= 0 && p)
l = strlen(p), fr = 1;
else
l = 0;