git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] git-prompt: fix reading files with windows line endings

From
Robert Abel <rabel@robertabel.eu>
Date
Nov 29, 2017, 22:09 UTC
Message-ID
<d57e4cb9-b0b4-314e-370a-e0db58a2a7da@robertabel.eu>
In-Reply-To
<alpine.DEB.2.21.1.1711291519290.6482@virtualbox>
Hi Johannes,
On 29 Nov 2017 15:27, Johannes Schindelin wrote:
Show 13 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.

Sorry, I wasn't really aware about this bash-ism. I agree that a generic solution would be best.

> So how about using `tr -d '\r' <"$f" | read "$@"` instead?

That doesn't work for me. Apparently, the variable is always reset to "" and hence the prompt will always display the shortened sha1. Maybe it has something to do with variable scoping inside the backtick evaluation?

> 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'

Actually, this got me thinking and reading the POSIX.1-2008, specifically http://pubs.opengroup.org/onlinepubs/9699919799/utilities/read.html.

It seems POSIX states that IFS should be supported by read. This means that it should be okay to just do

> test -r "$f" && IFS=" \t\r\n" read "$@" < "$f"

This would also get rid of the export and avoid introducing backtick evaluation.

Regards,
Robert
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 4 of 25 in “git-prompt: fix reading files with windows line endings”
  1. Robert AbelNov 28, 2017
  2. git-prompt: fix reading files with windows line endingsRobert Abel, Nov 28, 2017
  3. Johannes SchindelinNov 29, 2017
  4. Robert AbelNov 29, 2017
  5. Johannes SchindelinNov 30, 2017
  6. Robert AbelNov 30, 2017
  7. Johannes SchindelinNov 30, 2017
  8. Robert AbelNov 30, 2017
  9. Johannes SchindelinDec 1, 2017
  10. 1/2 git-prompt: make __git_eread intended use explicitRobert Abel, Dec 1, 2017
  11. 2/2 git-prompt: fix reading files with windows line endingsRobert Abel, Dec 1, 2017
  12. Johannes SchindelinDec 4, 2017
  13. Junio C HamanoDec 4, 2017
  14. Robert AbelDec 4, 2017
  15. Junio C HamanoDec 5, 2017
  16. Robert AbelDec 5, 2017
  17. Junio C HamanoDec 5, 2017
  18. Robert AbelDec 5, 2017
  19. 1/2 git-prompt: make __git_eread intended use explicitRobert Abel, Dec 5, 2017
  20. 2/2 git-prompt: fix reading files with windows line endingsRobert Abel, Dec 5, 2017
  21. 1/2 git-prompt: make __git_eread intended use explicitRobert Abel, Dec 4, 2017
  22. 2/2 git-prompt: fix reading files with windows line endingsRobert Abel, Dec 4, 2017
  23. SZEDER GáborNov 30, 2017
  24. Johannes SchindelinNov 30, 2017
  25. SZEDER GáborNov 30, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.