summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-03-09 19:27:15 -0400
committerJune McEnroe <june@causal.agency>2020-03-09 20:01:30 -0400
commitf7676f83b2b39a31b6db502af2c8bc024b302f81 (patch)
treea53d958dae743b0686b5fd6b725f2a3c11636b90
parentShorten $HOME to ~ in prompt expansion (diff)
downloadsrc-f7676f83b2b39a31b6db502af2c8bc024b302f81.tar.gz
src-f7676f83b2b39a31b6db502af2c8bc024b302f81.zip
Add \? exit status prompt expansion
-rw-r--r--bin/1sh/1sh.12
-rw-r--r--bin/1sh/parser.c12
2 files changed, 14 insertions, 0 deletions
diff --git a/bin/1sh/1sh.1 b/bin/1sh/1sh.1
index 9bbd881b..d72a87c7 100644
--- a/bin/1sh/1sh.1
+++ b/bin/1sh/1sh.1
@@ -1427,6 +1427,8 @@ This system's hostname.
 The final component of the current working directory.
 .It Li \ew
 The entire path of the current working directory.
+.It Li \e?
+Exit status if it is non-zero, empty string otherwise.
 .It Li \e$
 Superuser status.
 .Dq Li "$ "
diff --git a/bin/1sh/parser.c b/bin/1sh/parser.c
index 3f73220f..1038aa43 100644
--- a/bin/1sh/parser.c
+++ b/bin/1sh/parser.c
@@ -2039,6 +2039,18 @@ expandprompt(const char *fmt) {
 				break;
 
 				/*
+				 * Exit status if non-zero.
+				 */
+			case '?':
+				if (exitstatus != 0) {
+					snprintf(&ps[i], PROMPTLEN - i, "%d", exitstatus);
+					while (ps[i] != '\0')
+						i++;
+				}
+				i--;
+				break;
+
+				/*
 				 * Superuser status.
 				 *
 				 * '$' for normal users, '#' for root.
1&follow=1'>Bump version to 3.3.1p1 3.3.1p1June McEnroe 2021-03-05build: Add OpenSSL includes to libcompatJune McEnroe 2020-12-15Import LibreSSL 3.3.1June McEnroe 2020-11-24Import LibreSSL 3.3.0June McEnroe 2020-10-22Import LibreSSL 3.2.2June McEnroe 2020-09-29Import LibreSSL 3.2.1June McEnroe 2020-09-29import: Add m4/ax_add_fortify_source.m4June McEnroe 2020-08-05build: Add README.7 to EXTRA_DIST 3.2.0June McEnroe 2020-08-03doc: Indicate that only OpenSSL 1.1.1b and newer workJune McEnroe