[illumos-Developer] [REVIEW] 132 tr breaks scripts

Garrett D'Amore garrett at damore.org
Thu Sep 9 11:52:48 PDT 2010


Looks good, please proceed with integration following the normal
process.

	- Garrett

On Wed, 2010-09-08 at 09:14 -0400, Richard Lowe wrote:
> As noted in bug 132[1], I somehow ended up debugging this, I took the bug,
> hopefully with jgrafton's ok.
> 
> Assuming so, I'd like review for:
>    132 tr breaks scripts
> 
> webrev: 
>    http://richlowe.net/webrevs/il-tr
> 
> As noted in the bug, there're two bugs here, one I guess was discussed
> in the earlier thread, is that in inserting parens to gag the compiler a
> precedence problem was introduced to cset_in_hard which broke the
> character set logic.
> 
> The second is that, in bracket(), when parsing a left-hand string
> '[=]=]', FreeBSD tr sees '[=]' as a character class, followed by =],
> rather than '[=]=]' as an equivalence class.  This can be workaround in
> scripts by escaping the centre ']', but it appear that Solaris, xpg4,
> and GNU tr all parse such a line.  I've opted to fix this by skipping
> the centre character when searching for the = that terminates the
> equivalence class.  Care is required here to avoid breaking the
> behaviour of '[=*]' on the RHS (I thank the FreeBSD commit logs for
> making that plain to me).
> 
> I've tested this with the initial example given, with the trtests.sh
> script attached to the bug, somewhat by hand, and by running netbeans.
> 
> In the case of the cset_in_hard issue, I also compared the dissassembly
> of that function both with and without its clarifying parens, and
> confirmed that it doesn't change now, though did before.
> 
> Ceri, I send-pr'd the brackets() issue[2], but not the precedence one
> since I saw some conversation about that in the prior thread (though I
> confess, didn't read all of it).  Let me know if yourself and/or Garrett
> aren't on top of that.
> 
> -- Rich
> 
> [1] http://www.illumos.org/issues/132
> [2] bin/150384 -- http://www.freebsd.org/cgi/query-pr.cgi?pr=150384





More information about the Developer mailing list