From 3569857b7580f9037f5168a2e3888a86cc3a85a0 Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 21 May 2018 15:49:19 +0200 Subject: path: don't access global option struct The path functions need to access the option that forces non-default config directories. Just add it as a field to mpv_global - it seems justified. The accessed options were always enforced as immutable after init, so there's not much of a change. --- options/path.c | 22 +++++++++++++++------- options/path.h | 3 +++ 2 files changed, 18 insertions(+), 7 deletions(-) (limited to 'options') diff --git a/options/path.c b/options/path.c index dac9238cf9..d2b74516e1 100644 --- a/options/path.c +++ b/options/path.c @@ -61,6 +61,19 @@ static const char *const config_dirs[] = { "global", }; +void mp_init_paths(struct mpv_global *global, struct MPOpts *opts) +{ + TA_FREEP(&global->configdir); + + const char *force_configdir = getenv("MPV_HOME"); + if (opts->force_configdir && opts->force_configdir[0]) + force_configdir = opts->force_configdir; + if (!opts->load_config) + force_configdir = ""; + + global->configdir = talloc_strdup(global, force_configdir); +} + // Return a platform specific path using a path type as defined in osdep/path.h. // Keep in mind that the only way to free the return value is freeing talloc_ctx // (or its children), as this function can return a statically allocated string. @@ -70,15 +83,10 @@ static const char *mp_get_platform_path(void *talloc_ctx, { assert(talloc_ctx); - const char *force_configdir = getenv("MPV_HOME"); - if (global->opts->force_configdir && global->opts->force_configdir[0]) - force_configdir = global->opts->force_configdir; - if (!global->opts->load_config) - force_configdir = ""; - if (force_configdir) { + if (global->configdir) { for (int n = 0; n < MP_ARRAY_SIZE(config_dirs); n++) { if (strcmp(config_dirs[n], type) == 0) - return (n == 0 && force_configdir[0]) ? force_configdir : NULL; + return (n == 0 && global->configdir[0]) ? global->configdir : NULL; } } diff --git a/options/path.h b/options/path.h index 0d488fcb89..c3c3699a0b 100644 --- a/options/path.h +++ b/options/path.h @@ -24,6 +24,9 @@ #include "misc/bstr.h" struct mpv_global; +struct MPOpts; + +void mp_init_paths(struct mpv_global *global, struct MPOpts *opts); // Search for the input filename in several paths. These include user and global // config locations by default. Some platforms may implement additional platform -- cgit v1.2.3