aboutsummaryrefslogtreecommitdiff
path: root/cfg.c
diff options
context:
space:
mode:
Diffstat (limited to 'cfg.c')
-rw-r--r--cfg.c61
1 files changed, 11 insertions, 50 deletions
diff --git a/cfg.c b/cfg.c
index 933eda4e..84be3967 100644
--- a/cfg.c
+++ b/cfg.c
@@ -66,45 +66,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
@@ -123,18 +90,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);
@@ -182,7 +143,7 @@ load_cfg(const char *path, struct client *c, struct cmdq_item *item, int flags,
return (0);
}
- new_item0 = cmdq_get_command(pr->cmdlist, NULL, NULL, 0);
+ new_item0 = cmdq_get_command(pr->cmdlist, NULL);
if (item != NULL)
new_item0 = cmdq_insert_after(item, new_item0);
else
@@ -228,7 +189,7 @@ load_cfg_from_buffer(const void *buf, size_t len, const char *path,
return (0);
}
- new_item0 = cmdq_get_command(pr->cmdlist, NULL, NULL, 0);
+ new_item0 = cmdq_get_command(pr->cmdlist, NULL);
if (item != NULL)
new_item0 = cmdq_insert_after(item, new_item0);
else
@@ -283,7 +244,7 @@ cfg_show_causes(struct session *s)
wme = TAILQ_FIRST(&wp->modes);
if (wme == NULL || wme->mode != &window_view_mode)
- window_pane_set_mode(wp, &window_view_mode, NULL, NULL);
+ window_pane_set_mode(wp, NULL, &window_view_mode, NULL, NULL);
for (i = 0; i < cfg_ncauses; i++) {
window_copy_add(wp, "%s", cfg_causes[i]);
free(cfg_causes[i]);