[PATCH] lineedit: fix PS1='\W' for root directory

Ron Yorston rmy at pobox.com
Fri Aug 22 09:02:27 UTC 2025


'\W' in PS1 returned an empty string for the root directory.  bash
displays '/' in similar circumstances.

Avoid returning an empty string for the directory.

function                                             old     new   delta
parse_and_put_prompt                                 870     880     +10
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/0 up/down: 10/0)               Total: 10 bytes

Signed-off-by: Ron Yorston <rmy at pobox.com>
---
 libbb/lineedit.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index 10cc0433b..1ca21e924 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -2079,7 +2079,7 @@ static void parse_and_put_prompt(const char *prmt_ptr)
 					if (c == 'w')
 						break;
 					cp = strrchr(pbuf, '/');
-					if (cp)
+					if (cp && cp[1])
 						pbuf = (char*)cp + 1;
 					break;
 // bb_process_escape_sequence does this now:
-- 
2.50.1



More information about the busybox mailing list