]> git.ipfire.org Git - thirdparty/git.git/commitdiff
completion: suppress unwanted unescaping of `read`
authorEdwin Kofler <edwin@kofler.dev>
Thu, 20 Apr 2023 22:38:00 +0000 (07:38 +0900)
committerJunio C Hamano <gitster@pobox.com>
Thu, 20 Apr 2023 22:47:38 +0000 (15:47 -0700)
The function `__git_eread`, which reads the first line from the file,
calls the `read` builtin without passing the flag option `-r`.  When
the `read` builtin is called without the flag `-r`, it processes the
backslash escaping in the text that it reads.  For this reason, it is
generally considered the best practice to always use the `read`
builtin with flag `-r` unless one intensionally processes the
backslash escaping.  For the present case in git-prompt.sh, in fact,
all the occurrences of the calls of `__git_eread` intend to read the
literal content of the first lines.

To make it read the first line literally, pass the flag `-r` to the
`read` builtin in the function `__git_eread`.

Signed-off-by: Edwin Kofler <edwin@kofler.dev>
Signed-off-by: Koichi Murase <myoga.murase@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/completion/git-prompt.sh

index 57972c2845c135dc45aeb560d289aade4caa5e5d..b234bfefdaaf10329c9f268d5a1d642a6b56c322 100644 (file)
@@ -300,7 +300,7 @@ __git_ps1_colorize_gitstring ()
 # variable, in that order.
 __git_eread ()
 {
-       test -r "$1" && IFS=$'\r\n' read "$2" <"$1"
+       test -r "$1" && IFS=$'\r\n' read -r "$2" <"$1"
 }
 
 # see if a cherry-pick or revert is in progress, if the user has committed a