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

[PATCH] Avoid broken Solaris tr

From
Ben Walton <bdwalton@gmail.com>
Date
Jun 18, 2013, 21:17 UTC
Message-ID
<1371590247-13436-1-git-send-email-bdwalton@gmail.com>

Solaris' tr (both /usr/bin/ and /usr/xpg4/bin) fail to handle the case where the first argument is a multi-character set and the second is a single null character. Use perl to perform these substitutions instead. Now that we're using perl for the transliteration, we might as well replace the sed invocations with it too.

We make this change globally in t0008-ignores instead of just for the cases where it matters in order to maintain consistency.

Signed-off-by: Ben Walton <bdwalton@gmail.com>
---
 t/t0008-ignores.sh | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/t/t0008-ignores.sh b/t/t0008-ignores.sh
index a56db80..9e4987e 100755
--- a/t/t0008-ignores.sh
+++ b/t/t0008-ignores.sh
@@ -552,12 +552,13 @@ cat <<-EOF >expected-verbose
 	$global_excludes:2:!globaltwo	b/globaltwo
 EOF
 
-sed -e 's/^"//' -e 's/\\//' -e 's/"$//' stdin | \
-	tr "\n" "\0" >stdin0
-sed -e 's/^"//' -e 's/\\//' -e 's/"$//' expected-default | \
-	tr "\n" "\0" >expected-default0
-sed -e 's/	"/	/' -e 's/\\//' -e 's/"$//' expected-verbose | \
-	tr ":\t\n" "\0" >expected-verbose0
+perl -pne 's/^"//; s/\\//; s/"$//; s/\n/\0/g' stdin >stdin0
+
+perl -pne 's/^"//; s/\\//; s/"$//; s/\n/\0/g' expected-default > \
+    expected-default0
+
+perl -pne 's/	"/	/; s/\\//; s/"$//; s/[:\t\n]/\0/g' expected-verbose > \
+    expected-verbose0
 
 test_expect_success '--stdin' '
 	expect_from_stdin <expected-default &&
@@ -638,12 +639,13 @@ EOF
 grep -v '^::	' expected-all >expected-verbose
 sed -e 's/.*	//' expected-verbose >expected-default
 
-sed -e 's/^"//' -e 's/\\//' -e 's/"$//' stdin | \
-	tr "\n" "\0" >stdin0
-sed -e 's/^"//' -e 's/\\//' -e 's/"$//' expected-default | \
-	tr "\n" "\0" >expected-default0
-sed -e 's/	"/	/' -e 's/\\//' -e 's/"$//' expected-verbose | \
-	tr ":\t\n" "\0" >expected-verbose0
+perl -pne 's/^"//; s/\\//; s/"$//; s/\n/\0/g' stdin >stdin0
+
+perl -pne 's/^"//; s/\\//; s/"$//; s/\n/\0/g' expected-default > \
+    expected-default0
+
+perl -pne 's/	"/	/; s/\\//; s/"$//; s/[:\t\n]/\0/g' expected-verbose > \
+    expected-verbose0
 
 test_expect_success '--stdin from subdirectory' '
 	expect_from_stdin <expected-default &&
-- 
1.8.1.2
Next: Junio C Hamano
Message 1 of 24 in “Avoid broken Solaris tr”
  1. Avoid broken Solaris trBen Walton, Jun 18, 2013
  2. Junio C HamanoJun 18, 2013
  3. Ben WaltonOct 28, 2013
  4. Avoid difference in tr semantics between System V and BSDBen Walton, Oct 28, 2013
  5. Johannes SixtOct 28, 2013
  6. Jonathan NiederOct 28, 2013
  7. Junio C HamanoOct 28, 2013
  8. t/README: tests can use perl even with NO_PERLJonathan Nieder, Oct 28, 2013
  9. Johannes SixtOct 28, 2013
  10. Jeff KingOct 28, 2013
  11. Jonathan NiederOct 28, 2013
  12. Ben WaltonOct 28, 2013
  13. 0/3 perlJeff King, Oct 29, 2013
  14. 1/3 use @@PERL@@ in built scriptsJeff King, Oct 29, 2013
  15. Junio C HamanoOct 29, 2013
  16. 2/3 t: provide a perl() function which uses $PERL_PATHJeff King, Oct 29, 2013
  17. 3/3 t: use perl instead of "$PERL_PATH" where applicableJeff King, Oct 29, 2013
  18. Ben WaltonOct 28, 2013
  19. Ben WaltonOct 28, 2013
  20. Junio C HamanoOct 28, 2013
  21. Avoid difference in tr semantics between System V and BSDBen Walton, Oct 28, 2013
  22. Ben WaltonOct 28, 2013
  23. Avoid difference in tr semantics between System V and BSDBen Walton, Oct 28, 2013
  24. Junio C HamanoOct 30, 2013

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.