diff options
author | nicm <nicm> | 2020-05-16 14:26:33 +0000 |
---|---|---|
committer | nicm <nicm> | 2020-05-16 14:26:33 +0000 |
commit | a29196ca6a6401053d3a17d0ffe2d560918683a4 (patch) | |
tree | c20e7910c7270813ee83d173023340b40a022f4d /cfg.c | |
parent | 4e0a718666e3c24e69be107d0a294a9ae9f59388 (diff) | |
download | rtmux-a29196ca6a6401053d3a17d0ffe2d560918683a4.tar.gz rtmux-a29196ca6a6401053d3a17d0ffe2d560918683a4.tar.bz2 rtmux-a29196ca6a6401053d3a17d0ffe2d560918683a4.zip |
Build list of paths and weed out duplicates before loading configs, and
add TMUX_SOCK like TMUX_PATH for the socket directory.
Diffstat (limited to 'cfg.c')
-rw-r--r-- | cfg.c | 55 |
1 files changed, 8 insertions, 47 deletions
@@ -67,45 +67,12 @@ set_cfg_file(const char *path) cfg_file = xstrdup(path); } -static char * -expand_cfg_file(const char *path, const char *home) -{ - char *expanded, *name; - const char *end; - struct environ_entry *value; - - if (strncmp(path, "~/", 2) == 0) { - if (home == NULL) - return (NULL); - xasprintf(&expanded, "%s%s", home, path + 1); - return (expanded); - } - - if (*path == '$') { - end = strchr(path, '/'); - if (end == NULL) - name = xstrdup(path + 1); - else - name = xstrndup(path + 1, end - path - 1); - value = environ_find(global_environ, name); - free(name); - if (value == NULL) - return (NULL); - if (end == NULL) - end = ""; - xasprintf(&expanded, "%s%s", value->value, end); - return (expanded); - } - - return (xstrdup(path)); -} - void start_cfg(void) { - const char *home = find_home(); - struct client *c; - char *path, *copy, *next, *expanded; + struct client *c; + char **paths; + u_int i, n; /* * Configuration files are loaded without a client, so commands are run @@ -124,18 +91,12 @@ start_cfg(void) } if (cfg_file == NULL) { - path = copy = xstrdup(TMUX_CONF); - while ((next = strsep(&path, ":")) != NULL) { - expanded = expand_cfg_file(next, home); - if (expanded == NULL) { - log_debug("couldn't expand %s", next); - continue; - } - log_debug("expanded %s to %s", next, expanded); - load_cfg(expanded, c, NULL, CMD_PARSE_QUIET, NULL); - free(expanded); + expand_paths(TMUX_CONF, &paths, &n); + for (i = 0; i < n; i++) { + load_cfg(paths[i], c, NULL, CMD_PARSE_QUIET, NULL); + free(paths[i]); } - free(copy); + free(paths); } else load_cfg(cfg_file, c, NULL, 0, NULL); |