Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Dec 2018 17:51:40 +0000 (UTC)
From:      Edward Tomasz Napierala <trasz@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r342577 - head/bin/sh
Message-ID:  <201812281751.wBSHpeVV095681@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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++;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201812281751.wBSHpeVV095681>