diff options
author | wm4 <wm4@nowhere> | 2014-03-30 13:41:03 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-03-30 13:41:03 +0200 |
commit | 5cd20c73208e6fca063f829c86dd4cd22f55a31a (patch) | |
tree | 19437ad82631d4fdb7b4acc3b57620c4866e9bc5 /options | |
parent | 7cc985f3d01dbb27f17231793713caa6565e42ee (diff) | |
download | mpv-5cd20c73208e6fca063f829c86dd4cd22f55a31a.tar.bz2 mpv-5cd20c73208e6fca063f829c86dd4cd22f55a31a.tar.xz |
command: add helper function to split property paths
We've just checked whether a sub-path started with "name/", but that
changes behavior whether the property name has a trailing '/' or not.
Using a helper function to split of path components avoids this problem.
Diffstat (limited to 'options')
-rw-r--r-- | options/m_property.c | 14 | ||||
-rw-r--r-- | options/m_property.h | 6 |
2 files changed, 20 insertions, 0 deletions
diff --git a/options/m_property.c b/options/m_property.c index ff23979ade..d235c27c95 100644 --- a/options/m_property.c +++ b/options/m_property.c @@ -232,6 +232,20 @@ int m_property_do(struct mp_log *log, const m_option_t *prop_list, } } +bool m_property_split_path(const char *path, bstr *prefix, char **rem) +{ + char *next = strchr(path, '/'); + if (next) { + *prefix = bstr_splice(bstr0(path), 0, next - path); + *rem = next + 1; + return true; + } else { + *prefix = bstr0(path); + *rem = ""; + return false; + } +} + static int m_property_do_bstr(const m_option_t *prop_list, bstr name, int action, void *arg, void *ctx) { diff --git a/options/m_property.h b/options/m_property.h index 6fc27301b5..808066dde6 100644 --- a/options/m_property.h +++ b/options/m_property.h @@ -122,6 +122,12 @@ enum mp_property_return { int m_property_do(struct mp_log *log, const struct m_option* prop_list, const char* property_name, int action, void* arg, void *ctx); +// Given a path of the form "a/b/c", this function will set *prefix to "a", +// and rem to "b/c", and return true. +// If there is no '/' in the path, set prefix to path, and rem to "", and +// return false. +bool m_property_split_path(const char *path, bstr *prefix, char **rem); + // Print a list of properties. void m_properties_print_help_list(struct mp_log *log, const struct m_option* list); |