diff options
Diffstat (limited to 'tmux.c')
-rw-r--r-- | tmux.c | 30 |
1 files changed, 20 insertions, 10 deletions
@@ -188,9 +188,11 @@ find_home(void) int main(int argc, char **argv) { - char *path, *label, **var, tmp[PATH_MAX], *shellcmd = NULL; - const char *s; - int opt, flags, keys; + char *path, *label, tmp[PATH_MAX]; + char *shellcmd = NULL, **var; + const char *s, *shell; + int opt, flags, keys; + const struct options_table_entry *oe; if (setlocale(LC_CTYPE, "en_US.UTF-8") == NULL) { if (setlocale(LC_CTYPE, "") == NULL) @@ -291,15 +293,23 @@ main(int argc, char **argv) environ_set(global_environ, "PWD", "%s", tmp); global_options = options_create(NULL); - options_table_populate_tree(OPTIONS_TABLE_SERVER, global_options); - global_s_options = options_create(NULL); - options_table_populate_tree(OPTIONS_TABLE_SESSION, global_s_options); - options_set_string(global_s_options, "default-shell", 0, "%s", - getshell()); - global_w_options = options_create(NULL); - options_table_populate_tree(OPTIONS_TABLE_WINDOW, global_w_options); + for (oe = options_table; oe->name != NULL; oe++) { + if (oe->scope == OPTIONS_TABLE_SERVER) + options_default(global_options, oe); + if (oe->scope == OPTIONS_TABLE_SESSION) + options_default(global_s_options, oe); + if (oe->scope == OPTIONS_TABLE_WINDOW) + options_default(global_w_options, oe); + } + + /* + * The default shell comes from SHELL or from the user's passwd entry + * if available. + */ + shell = getshell(); + options_set_string(global_s_options, "default-shell", 0, "%s", shell); /* Override keys to vi if VISUAL or EDITOR are set. */ if ((s = getenv("VISUAL")) != NULL || (s = getenv("EDITOR")) != NULL) { |