svn commit: r342577 - head/bin/sh
Edward Tomasz Napierala
trasz at FreeBSD.org
Fri Dec 28 17:51:41 UTC 2018
Author: trasz
Date: Fri Dec 28 17:51:40 2018
New Revision: 342577
URL: https://svnweb.freebsd.org/changeset/base/342577
Log:
Make sh(1) collapse $HOME into "~" in PS1.
Reviewed by: jilles
MFC after: 2 weeks
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D18663
Modified:
head/bin/sh/parser.c
Modified: head/bin/sh/parser.c
==============================================================================
--- head/bin/sh/parser.c Fri Dec 28 17:50:40 2018 (r342576)
+++ head/bin/sh/parser.c Fri Dec 28 17:51:40 2018 (r342577)
@@ -1978,7 +1978,9 @@ getprompt(void *unused __unused)
{
static char ps[PROMPTLEN];
const char *fmt;
+ const char *home;
const char *pwd;
+ size_t homelen;
int i, trim;
static char internal_error[] = "??";
@@ -2039,8 +2041,24 @@ getprompt(void *unused __unused)
*pwd == '/' && pwd[1] != '\0')
strlcpy(&ps[i], strrchr(pwd, '/') + 1,
PROMPTLEN - i);
- else
- strlcpy(&ps[i], pwd, PROMPTLEN - i);
+ else {
+ home = lookupvar("HOME");
+ if (home != NULL)
+ homelen = strlen(home);
+ if (home != NULL &&
+ strcmp(home, "/") != 0 &&
+ strncmp(pwd, home, homelen) == 0 &&
+ (pwd[homelen] == '/' ||
+ pwd[homelen] == '\0')) {
+ strlcpy(&ps[i], "~",
+ PROMPTLEN - i);
+ strlcpy(&ps[i + 1],
+ pwd + homelen,
+ PROMPTLEN - i - 1);
+ } else {
+ strlcpy(&ps[i], pwd, PROMPTLEN - i);
+ }
+ }
/* Skip to end of path. */
while (ps[i + 1] != '\0')
i++;
More information about the svn-src-all
mailing list