config: prefer $SHELL over /etc/passwd

If the user hasn't configured a shell in footrc, use $SHELL. Only if
that variable isn't set do we use the shell from /etc/passwd.
This commit is contained in:
Daniel Eklöf 2020-03-02 18:45:38 +01:00
parent f235bfdfdf
commit 74175b5bd1
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
3 changed files with 15 additions and 10 deletions

View file

@ -44,15 +44,19 @@ static const uint32_t default_bright[] = {
static char *
get_shell(void)
{
struct passwd *passwd = getpwuid(getuid());
if (passwd == NULL) {
LOG_ERRNO("failed to lookup user");
return NULL;
const char *shell = getenv("SHELL");
if (shell == NULL) {
struct passwd *passwd = getpwuid(getuid());
if (passwd == NULL) {
LOG_ERRNO("failed to lookup user");
return NULL;
}
shell = passwd->pw_shell;
}
const char *shell = passwd->pw_shell;
LOG_DBG("user's shell: %s", shell);
return strdup(shell);
}