diff options
-rw-r--r-- | bin/1sh/1sh.1 | 2 | ||||
-rw-r--r-- | bin/1sh/parser.c | 12 |
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. |