about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2004-07-29 11:45:53 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2004-07-29 11:45:53 +0000
commite1d8ca1d70053e44c3e4950ceafe3f07e6e67d0d (patch)
tree41cb550a85746d904220b68b11f0b35432e12735
parent241aa1d40d31dcab9b7f108939f220fb56b2480d (diff)
downloadzsh-e1d8ca1d70053e44c3e4950ceafe3f07e6e67d0d.tar.gz
zsh-e1d8ca1d70053e44c3e4950ceafe3f07e6e67d0d.tar.xz
zsh-e1d8ca1d70053e44c3e4950ceafe3f07e6e67d0d.zip
20208: ternary path codes in prompt treat / as zero elements
-rw-r--r--ChangeLog5
-rw-r--r--Doc/Zsh/prompt.yo6
-rw-r--r--Src/prompt.c5
3 files changed, 13 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 9dd866c38..b9dfe083c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-07-29  Peter Stephenson  <pws@csr.com>
+
+	* 20208: Src/prompt.c, Doc/Zsh/prompt.yo: ternary code character C
+	etc. treat / as path with zero elements.
+
 2004-07-28  Peter Stephenson  <pws@csr.com>
 
 	* 20214: Src/parse.c: fix debugging test that didn't work
diff --git a/Doc/Zsh/prompt.yo b/Doc/Zsh/prompt.yo
index cb4609240..2745abb1d 100644
--- a/Doc/Zsh/prompt.yo
+++ b/Doc/Zsh/prompt.yo
@@ -217,11 +217,13 @@ sitem(tt(#))(True if the effective uid of the current process is var(n).)
 sitem(tt(?))(True if the exit status of the last command was var(n).)
 sitem(tt(_))(True if at least var(n) shell constructs were started.)
 sxitem(tt(C))
-sitem(tt(/))(True if the current absolute path has at least var(n) elements.)
+sitem(tt(/))(True if the current absolute path has at least var(n) elements
+relative to the root directory, hence tt(/) is counted as 0 elements.)
 sxitem(tt(c))
 sxitem(tt(.))
 sitem(tt(~))(True if the current path, with prefix replacement, has at
-least var(n) elements.)
+least var(n) elements relative to the root directory, hence tt(/) is
+counted as 0 elements.)
 sitem(tt(D))(True if the month is equal to var(n) (January = 0).)
 sitem(tt(d))(True if the day of the month is equal to var(n).)
 sitem(tt(g))(True if the effective gid of the current process is var(n).)
diff --git a/Src/prompt.c b/Src/prompt.c
index 56d6a76fd..3b16a8e44 100644
--- a/Src/prompt.c
+++ b/Src/prompt.c
@@ -244,9 +244,12 @@ putpromptchar(int doprint, int endchar)
 		    if ((nd = finddir(ss))) {
 			arg--;
 			ss += strlen(nd->dir);
-		    }
+		    } /*FALLTHROUGH*/
 		case '/':
 		case 'C':
+		    /* `/' gives 0, `/any' gives 1, etc. */
+		    if (*ss++ == '/' && *ss)
+			arg--;
 		    for (; *ss; ss++)
 			if (*ss == '/')
 			    arg--;