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.
This commit is contained in:
Nicholas Marriott
2009-07-08 05:26:45 +00:00
parent b4efd1ca89
commit 084d07f4eb
5 changed files with 53 additions and 18 deletions

15
names.c
View File

@ -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 *