From 7adec20804543173f93e4eb2f669646e5cc12fc9 Mon Sep 17 00:00:00 2001 From: "Andrey A. Chernov" Date: Thu, 27 Feb 1997 05:09:58 +0000 Subject: [PATCH] Back out "shell" / pw_shell change, I was confused by the same variable name (with different functionality) --- usr.bin/login/login.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/usr.bin/login/login.c b/usr.bin/login/login.c index c6ff4dbe11e..affb3c5bd04 100644 --- a/usr.bin/login/login.c +++ b/usr.bin/login/login.c @@ -582,8 +582,6 @@ main(argc, argv) strncpy(shell, pwd->pw_shell, sizeof shell); #endif /* LOGIN_CAP */ shell[sizeof shell - 1] = '\0'; - if (*shell == '\0') - strcpy(shell, _PATH_BSHELL); #ifdef LOGIN_ACCESS if (login_access(pwd->pw_name, hostname ? full_hostname : tty) == 0) { @@ -661,7 +659,12 @@ main(argc, argv) (void)setuid(rootlogin ? 0 : pwd->pw_uid); #endif - (void)setenv("SHELL", shell, 1); + if (*pwd->pw_shell == '\0') { + pwd->pw_shell = _PATH_BSHELL; + if (*shell == '\0') /* Not overridden */ + strcpy(shell, pwd->pw_shell); + } + (void)setenv("SHELL", pwd->pw_shell, 1); (void)setenv("HOME", pwd->pw_dir, 1); if (term[0] != '\0') (void)setenv("TERM", term, 1); /* Preset overrides */ @@ -713,7 +716,7 @@ main(argc, argv) /* Login shells have a leading '-' in front of argv[0] */ tbuf[0] = '-'; - (void)strcpy(tbuf + 1, (p = strrchr(shell, '/')) ? p + 1 : shell); + (void)strcpy(tbuf + 1, (p = strrchr(pwd->pw_shell, '/')) ? p + 1 : pwd->pw_shell); #ifdef LOGIN_CAP login_close(lc);