Re: [PATCH] git-prompt: fix reading files with windows line endings
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Nov 29, 2017, 14:27 UTC
- Message-ID
- <alpine.DEB.2.21.1.1711291519290.6482@virtualbox>
- In-Reply-To
- <20171128201818.4132-2-rabel@robertabel.eu>
Hi Robert,
On Tue, 28 Nov 2017, Robert Abel wrote:
Show 9 quoted lines
> If any of the files read by __git_eread have \r\n line endings, read > will only strip \n, leaving \r. This results in an ugly prompt, where > instead of > > user@pc MINGW64 /path/to/repo (BARE:master) > > the last parenthesis is printed over the beginning of the prompt like > > )ser@pc MINGW64 /path/to/repo (BARE:master
Thats' unfortunate, and obviously something to fix.
Show 10 quoted lines
> diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
> index c6cbef38c2..71a64e7959 100644
> --- a/contrib/completion/git-prompt.sh
> +++ b/contrib/completion/git-prompt.sh
> @@ -282,7 +282,7 @@ __git_eread ()
> {
> local f="$1"
> shift
> - test -r "$f" && read "$@" <"$f"
> + test -r "$f" && read "$@" <"$f" && export $@="${!@%$'\r'}"As far as I understand, $'\r' is a Bash-only construct, and this file (git-prompt.sh) is targeting other Unix shells, too.
So how about using `tr -d '\r' <"$f" | read "$@"` instead?
Or maybe keep with the Bash construct, but guarded behind a test that we area actually running in Bash? Something like
test -z "$BASH" || IFS=$' \t\r\n'
Ciao, Johannes