version 1.44, 2016/01/19 15:59:12 |
version 1.45, 2016/05/12 16:05:33 |
|
|
void |
void |
start_cfg(void) |
start_cfg(void) |
{ |
{ |
char *cause = NULL; |
|
const char *home; |
const char *home; |
|
int quiet = 0; |
|
|
cfg_cmd_q = cmdq_new(NULL); |
cfg_cmd_q = cmdq_new(NULL); |
cfg_cmd_q->emptyfn = cfg_default_done; |
cfg_cmd_q->emptyfn = cfg_default_done; |
|
|
if (cfg_client != NULL) |
if (cfg_client != NULL) |
cfg_client->references++; |
cfg_client->references++; |
|
|
if (access(TMUX_CONF, R_OK) == 0) { |
load_cfg(TMUX_CONF, cfg_cmd_q, 1); |
if (load_cfg(TMUX_CONF, cfg_cmd_q, &cause) == -1) |
|
cfg_add_cause("%s: %s", TMUX_CONF, cause); |
|
} else if (errno != ENOENT) |
|
cfg_add_cause("%s: %s", TMUX_CONF, strerror(errno)); |
|
|
|
if (cfg_file == NULL && (home = find_home()) != NULL) { |
if (cfg_file == NULL && (home = find_home()) != NULL) { |
xasprintf(&cfg_file, "%s/.tmux.conf", home); |
xasprintf(&cfg_file, "%s/.tmux.conf", home); |
if (access(cfg_file, R_OK) != 0 && errno == ENOENT) { |
quiet = 1; |
free(cfg_file); |
|
cfg_file = NULL; |
|
} |
|
} |
} |
if (cfg_file != NULL && load_cfg(cfg_file, cfg_cmd_q, &cause) == -1) |
if (cfg_file != NULL) |
cfg_add_cause("%s: %s", cfg_file, cause); |
load_cfg(cfg_file, cfg_cmd_q, quiet); |
free(cause); |
|
|
|
cmdq_continue(cfg_cmd_q); |
cmdq_continue(cfg_cmd_q); |
} |
} |
|
|
int |
int |
load_cfg(const char *path, struct cmd_q *cmdq, char **cause) |
load_cfg(const char *path, struct cmd_q *cmdq, int quiet) |
{ |
{ |
FILE *f; |
FILE *f; |
char delim[3] = { '\\', '\\', '\0' }; |
char delim[3] = { '\\', '\\', '\0' }; |
|
|
|
|
log_debug("loading %s", path); |
log_debug("loading %s", path); |
if ((f = fopen(path, "rb")) == NULL) { |
if ((f = fopen(path, "rb")) == NULL) { |
xasprintf(cause, "%s: %s", path, strerror(errno)); |
if (errno == ENOENT && quiet) |
|
return (0); |
|
cfg_add_cause("%s: %s", path, strerror(errno)); |
return (-1); |
return (-1); |
} |
} |
|
|