version 1.75, 2019/06/20 06:51:36 |
version 1.76, 2019/12/10 14:22:15 |
|
|
cfg_file = xstrdup(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 |
void |
start_cfg(void) |
start_cfg(void) |
{ |
{ |
const char *home; |
const char *home = find_home(); |
int flags = 0; |
|
struct client *c; |
struct client *c; |
|
char *path, *copy, *next, *expanded; |
|
|
/* |
/* |
* Configuration files are loaded without a client, so commands are run |
* Configuration files are loaded without a client, so commands are run |
|
|
cmdq_append(c, cfg_item); |
cmdq_append(c, cfg_item); |
} |
} |
|
|
if (cfg_file == NULL) |
if (cfg_file == NULL) { |
load_cfg(TMUX_CONF, c, NULL, CMD_PARSE_QUIET, NULL); |
path = copy = xstrdup(TMUX_CONF); |
|
while ((next = strsep(&path, ":")) != NULL) { |
if (cfg_file == NULL && (home = find_home()) != NULL) { |
expanded = expand_cfg_file(next, home); |
xasprintf(&cfg_file, "%s/.tmux.conf", home); |
if (expanded == NULL) { |
flags = CMD_PARSE_QUIET; |
log_debug("couldn't expand %s", next); |
} |
continue; |
if (cfg_file != NULL) |
} |
load_cfg(cfg_file, c, NULL, flags, NULL); |
log_debug("expanded %s to %s", next, expanded); |
|
load_cfg(expanded, c, NULL, CMD_PARSE_QUIET, NULL); |
|
free(expanded); |
|
} |
|
free(copy); |
|
} else |
|
load_cfg(cfg_file, c, NULL, 0, NULL); |
|
|
cmdq_append(NULL, cmdq_get_callback(cfg_done, NULL)); |
cmdq_append(NULL, cmdq_get_callback(cfg_done, NULL)); |
} |
} |