From: Ben Walton <bdwalton@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git <git@vger.kernel.org>
Subject: Re: [PATCH] Avoid broken Solaris tr
Date: Mon, 28 Oct 2013 09:02:08 +0000 [thread overview]
Message-ID: <CAP30j17OCrYjsVK+W_TR-g99YmzY3d9TnYfwHXK7+6vPrVjDaQ@mail.gmail.com> (raw)
In-Reply-To: <7vli672gql.fsf@alter.siamese.dyndns.org>
On Tue, Jun 18, 2013 at 11:31 PM, Junio C Hamano <gitster@pobox.com> wrote:
Sorry for the very slow reply. This got lost in my inbox and I forgot about it.
> 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?
In retrospect, this isn't brokenness, just a difference in System V vs
BSD semantics for tr, both of which are allowed by POSIX since the
behaviour in question is specifically unspecified by the standard. The
System V behaviour is to require a 1:1 map between string1 and string2
transformations whereas BSD behaviour (when len(string2) <
len(string1)) is to pad string2 with the last character in string2
until the lengths are equal.
>
>> 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.
I've updated the patch and will forward it shortly.
Thanks
-Ben
--
---------------------------------------------------------------------------------------------------------------------------
Take the risk of thinking for yourself. Much more happiness,
truth, beauty and wisdom will come to you that way.
-Christopher Hitchens
---------------------------------------------------------------------------------------------------------------------------
next prev parent reply other threads:[~2013-10-28 9:02 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-18 21:17 [PATCH] Avoid broken Solaris tr Ben Walton
2013-06-18 22:31 ` Junio C Hamano
2013-10-28 9:02 ` Ben Walton [this message]
2013-10-28 9:13 ` [PATCH] Avoid difference in tr semantics between System V and BSD Ben Walton
2013-10-28 18:07 ` Johannes Sixt
2013-10-28 18:27 ` Jonathan Nieder
2013-10-28 19:08 ` Junio C Hamano
2013-10-28 19:22 ` [PATCH] t/README: tests can use perl even with NO_PERL Jonathan Nieder
2013-10-28 19:46 ` Johannes Sixt
2013-10-28 19:54 ` Jeff King
2013-10-28 21:04 ` Jonathan Nieder
2013-10-28 21:43 ` Ben Walton
2013-10-29 1:18 ` [RFC/PATCH 0/3] perl Jeff King
2013-10-29 1:19 ` [PATCH 1/3] use @@PERL@@ in built scripts Jeff King
2013-10-29 19:41 ` Junio C Hamano
2013-10-29 1:22 ` [PATCH 2/3] t: provide a perl() function which uses $PERL_PATH Jeff King
2013-10-29 1:23 ` [PATCH 3/3] t: use perl instead of "$PERL_PATH" where applicable Jeff King
2013-10-28 21:04 ` [PATCH] Avoid difference in tr semantics between System V and BSD Ben Walton
2013-10-28 21:12 ` Ben Walton
2013-10-28 21:30 ` Junio C Hamano
2013-10-28 21:40 ` Ben Walton
2013-10-28 21:43 ` Ben Walton
2013-10-28 21:43 ` Ben Walton
2013-10-30 17:39 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAP30j17OCrYjsVK+W_TR-g99YmzY3d9TnYfwHXK7+6vPrVjDaQ@mail.gmail.com \
--to=bdwalton@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).