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

Re: [PATCH] Avoid broken Solaris tr

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 18, 2013, 22:31 UTC
Message-ID
<7vli672gql.fsf@alter.siamese.dyndns.org>
In-Reply-To
<1371590247-13436-1-git-send-email-bdwalton@gmail.com>
Ben Walton <bdwalton@gmail.com> writes:
> 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.

Almost all the tr invocations look like converting LF to NUL, except for two that squash a colon ':', HT and LF all to NUL. Is Solaris's tr fine with the former but not the latter?

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

I am not suggesting to keep 'tr "\n" "\0"', but just wanted to make sure I am reading the first paragraph correctly. If we are rewriting, we should do so consistently.

> +perl -pne 's/^"//; s/\\//; s/"$//; s/\n/\0/g' stdin >stdin0
What is -pne?  Is it the same as -pe?
tr/\n/\0/ (or y/\n/\0/) may be more faithful to the original.
> +perl -pne 's/^"//; s/\\//; s/"$//; s/\n/\0/g' expected-default > \
> +    expected-default0

Ditto. We may want to give the same script used in the above two (and twice again in the later hunk) more descriptive name, e.g.

	broken_c_unquote () {
		perl -pe '... that script ...' "$@"
	}
	broken_c_quote stdin >stdin0

Side note: the script is broken as a generic C-unquote function in multiple ways. It does not work if it has more than one backslash quoted characters, it does not understand \t, \b, \015, \\, etc. to name two.

But the breakage does not matter for the strings used in the test vector.

Previous: Ben WaltonNext: Ben Walton
Message 2 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.