MFC r299035: sh: Handle empty hostname and $PWD when building prompt

If the hostname is empty and \h is used in $PS1,
the remainder of the prompt following \h will be empty.
Likewise for $PWD and \w.  Fix it.
This commit is contained in:
vangyzen 2016-05-11 22:11:37 +00:00
parent 4dc4a17495
commit 0c387e6a51

View File

@ -1990,8 +1990,9 @@ getprompt(void *unused __unused)
gethostname(&ps[i], PROMPTLEN - i);
/* Skip to end of hostname. */
trim = (*fmt == 'h') ? '.' : '\0';
while ((ps[i+1] != '\0') && (ps[i+1] != trim))
while ((ps[i] != '\0') && (ps[i] != trim))
i++;
--i;
break;
/*
@ -2003,7 +2004,7 @@ getprompt(void *unused __unused)
case 'W':
case 'w':
pwd = lookupvar("PWD");
if (pwd == NULL)
if (pwd == NULL || *pwd == '\0')
pwd = "?";
if (*fmt == 'W' &&
*pwd == '/' && pwd[1] != '\0')