diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2009-07-08 05:26:45 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2009-07-08 05:26:45 +0000 |
commit | 084d07f4eb5dc3d90e28725524147e66a25b869b (patch) | |
tree | 0cbfab6bd64ee71d1023e83930ec7e6b8aeea2da /names.c | |
parent | b4efd1ca89132dcf24acd6dc7b1ccee369b7d90c (diff) |
Just appending -l to $SHELL to create a login shell is wrong: -l is not POSIX,
and some people may use shells which do not support it. Instead, make an empty
default-command option mean a login shell, and fork it with a - in argv[0]
which is the method used by login(1).
Also fix the automatic-rename code to handle this correctly and to strip a
leading - if present.
Diffstat (limited to 'names.c')
-rw-r--r-- | names.c | 15 |
1 files changed, 13 insertions, 2 deletions
@@ -59,7 +59,16 @@ set_window_names(void) if (name == NULL) wname = default_window_name(w); else { - wname = parse_window_name(name); + /* + * If tmux is using the default command, it will be a + * login shell and argv[0] may have a - prefix. Remove + * this if it is present. Ick. + */ + if (w->active->cmd != NULL && *w->active->cmd == '\0' && + name != NULL && name[0] == '-' && name[1] != '\0') + wname = parse_window_name(name + 1); + else + wname = parse_window_name(name); xfree(name); } @@ -78,7 +87,9 @@ default_window_name(struct window *w) { if (w->active->screen != &w->active->base) return (xstrdup("[tmux]")); - return (parse_window_name(w->active->cmd)); + if (w->active->cmd != NULL && *w->active->cmd != '\0') + return (parse_window_name(w->active->cmd)); + return (parse_window_name(window_default_command())); } char * |