mirror of
https://git.FreeBSD.org/src.git
synced 2025-02-01 17:00:36 +00:00
sh: Use $PWD instead of getcwd() for the \w and \W prompt expansions.
This ensures that the logical working directory (which may include symlinks) is shown and is similar to the default behaviour of the pwd builtin.
This commit is contained in:
parent
778c4480f4
commit
c9c987cd35
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=209653
@ -1734,7 +1734,8 @@ getprompt(void *unused __unused)
|
||||
{
|
||||
static char ps[PROMPTLEN];
|
||||
char *fmt;
|
||||
int i, j, trim;
|
||||
const char *pwd;
|
||||
int i, trim;
|
||||
static char internal_error[] = "<internal prompt error>";
|
||||
|
||||
/*
|
||||
@ -1785,17 +1786,15 @@ getprompt(void *unused __unused)
|
||||
*/
|
||||
case 'W':
|
||||
case 'w':
|
||||
ps[i] = '\0';
|
||||
getcwd(&ps[i], PROMPTLEN - i);
|
||||
if (*fmt == 'W' && ps[i + 1] != '\0') {
|
||||
/* Final path component only. */
|
||||
trim = 1;
|
||||
for (j = i; ps[j] != '\0'; j++)
|
||||
if (ps[j] == '/')
|
||||
trim = j + 1;
|
||||
memmove(&ps[i], &ps[trim],
|
||||
j - trim + 1);
|
||||
}
|
||||
pwd = lookupvar("PWD");
|
||||
if (pwd == NULL)
|
||||
pwd = "?";
|
||||
if (*fmt == 'W' &&
|
||||
*pwd == '/' && pwd[1] != '\0')
|
||||
strlcpy(&ps[i], strrchr(pwd, '/') + 1,
|
||||
PROMPTLEN - i);
|
||||
else
|
||||
strlcpy(&ps[i], pwd, PROMPTLEN - i);
|
||||
/* Skip to end of path. */
|
||||
while (ps[i + 1] != '\0')
|
||||
i++;
|
||||
|
Loading…
x
Reference in New Issue
Block a user