--- config.def.h | 1 + st.c | 17 +++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/config.def.h b/config.def.h index fe81078..cc16f97 100644 --- a/config.def.h +++ b/config.def.h _AT_@ -8,6 +8,7 @@ static char font[] = "Liberation Mono:pixelsize=12:antialias=false:autohint=false"; static int borderpx = 2; static char shell[] = "/bin/sh"; +static char *utmp = NULL; /* identification sequence returned in DA and DECID */ static char vtiden[] = "\033[?6c"; diff --git a/st.c b/st.c index dd3301b..ab3fa6e 100644 --- a/st.c +++ b/st.c _AT_@ -1153,16 +1153,22 @@ execsh(void) { else die("who are you?\n"); } - unsetenv("COLUMNS"); - unsetenv("LINES"); - unsetenv("TERMCAP"); - sh = (pw->pw_shell[0]) ? pw->pw_shell : shell; + if (utmp) + sh = utmp; + else if (pw->pw_shell[0]) + sh = pw->pw_shell; + else + sh = shell; + args = (opt_cmd) ? opt_cmd : (char *[]){sh, NULL}; snprintf(buf, sizeof(buf), "%lu", xw.win); + unsetenv("COLUMNS"); + unsetenv("LINES"); + unsetenv("TERMCAP"); setenv("LOGNAME", pw->pw_name, 1); setenv("USER", pw->pw_name, 1); - setenv("SHELL", sh, 1); + setenv("SHELL", args[0], 1); setenv("HOME", pw->pw_dir, 1); setenv("TERM", termname, 1); setenv("WINDOWID", buf, 1); _AT_@ -1174,7 +1180,6 @@ execsh(void) { signal(SIGTERM, SIG_DFL); signal(SIGALRM, SIG_DFL); - args = opt_cmd ? opt_cmd : (char *[]){sh, "-i", NULL}; execvp(args[0], args); exit(EXIT_FAILURE); } -- 1.9.3Received on Tue Sep 23 2014 - 07:18:32 CEST
This archive was generated by hypermail 2.3.0 : Wed Sep 24 2014 - 11:12:11 CEST