Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

[patch] Fix VCS_INFO_reposub's whitespace handling



Hi,

VCS_INFO_reposub is the function called to process VCS_INFO's %S flag
in 'formats' and 'actionformats'.

Problem:

$ mkdir -p '/tmp/foo   bar'
$ cd !$
$ VCS_INFO_reposub

Output:

"tmp/foobar" instead of "tmp/foo   bar".

I'm new to zsh internals, but apparently something causes the string
'foo   bar' to be read in as 2 arguments. printf only takes 1
argument, and so 'bar' just gets appended.

Could someone point me to the appropriate parameter expansion rule?

Solution:

Double-quote ${$(pwd -P)#$base/}.

Regards,

Marco
diff --git a/Functions/VCS_Info/VCS_INFO_reposub b/Functions/VCS_Info/VCS_INFO_reposub
index 1c16f0e..0e6a8b0 100644
--- a/Functions/VCS_Info/VCS_INFO_reposub
+++ b/Functions/VCS_Info/VCS_INFO_reposub
@@ -9,5 +9,5 @@ local base=${1%%/##}
     printf '.'
     return 1
 }
-printf '%s' ${$(pwd -P)#$base/}
+printf '%s' "${$(pwd -P)#$base/}"
 return 0


Messages sorted by: Reverse Date, Date, Thread, Author