completion: suppress unwanted unescaping of read

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>
This commit is contained in:
Edwin Kofler 2023-04-21 07:38:00 +09:00 committed by Junio C Hamano
parent 73876f4861
commit 197152098a

View File

@ -300,7 +300,7 @@ __git_ps1_colorize_gitstring ()
# variable, in that order. # variable, in that order.
__git_eread () __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 # see if a cherry-pick or revert is in progress, if the user has committed a