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

[PATCH 2/2] vimdiff: make script and tests work with zsh

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Apr 26, 2024, 22:11 UTC
Message-ID
<20240426221154.2194139-3-sandals@crustytoothpaste.net>
In-Reply-To
<20240426221154.2194139-1-sandals@crustytoothpaste.net>

When we process the $LAYOUT variable through sed, the result will end with the character "#". We then split it at the shell using IFS so that we can process it a character at a time.

POSIX specifies that only "IFS white space shall be ignored at the beginning and end of the input". The hash mark is not a white space character, so it is not ignored at the beginning and end of the input.

POSIX then specifies that "[e]ach occurrence in the input of an IFS character that is not IFS white space, along with any adjacent IFS white space, shall delimit a field, as described previously." Thus, the final hash mark delimits a field, and the final field is the empty string.

zsh implements this behavior strictly in compliance with POSIX (and differently from most other shells), such that we end up with a trailing empty field. We don't want this empty field and processing it in the normal way causes us to fail to parse properly and fail the tests with "ERROR" entries, so let's just ignore it instead. This is the behavior of bash and dash anyway and what was clearly intended, so this is a reasonable thing to do.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 mergetools/vimdiff | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/mergetools/vimdiff b/mergetools/vimdiff
index 97e376329b..734d15a03b 100644
--- a/mergetools/vimdiff
+++ b/mergetools/vimdiff
@@ -72,7 +72,6 @@ gen_cmd_aux () {
 	nested=0
 	nested_min=100
 
-
 	# Step 1:
 	#
 	# Increase/decrease "start"/"end" indices respectively to get rid of
@@ -87,7 +86,7 @@ gen_cmd_aux () {
 	IFS=#
 	for c in $(echo "$LAYOUT" | sed 's:.:&#:g')
 	do
-		if test "$c" = " "
+		if test -z "$c" || test "$c" = " "
 		then
 			continue
 		fi
Previous: brian m. carlsonNext: brian m. carlson
Message 2 of 4 in “Test fixes when running with zsh in sh mode”
  1. 0/2 Test fixes when running with zsh in sh modebrian m. carlson, Apr 26, 2024
  2. 2/2 vimdiff: make script and tests work with zshbrian m. carlson, Apr 26, 2024
  3. 1/2 t4046: avoid continue in &&-chain for zshbrian m. carlson, Apr 26, 2024
  4. Junio C HamanoApr 27, 2024

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.