git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Solaris test failure for git-1.5.4.4 -- t0021-conversion.sh
@ 2008-03-11 12:33 Whit Armstrong
  2008-03-11 12:52 ` Johannes Schindelin
  2008-03-11 16:55 ` Asheesh Laroia
  0 siblings, 2 replies; 13+ messages in thread
From: Whit Armstrong @ 2008-03-11 12:33 UTC (permalink / raw)
  To: git

Git Version: git-1.5.4.4

xs5-trd-p1.grn:warmstro> uname -a
SunOS xs5-trd-p1.grn.tudor.com 5.9 Generic_118558-38 sun4u sparc
SUNW,Sun-Fire-V240

looks like most errors below are related to tr.  The tr I'm using is in xpg4.

xs5-trd-p1.grn:warmstro> which tr
/usr/xpg4/bin/tr



xs5-trd-p1.grn:warmstro> sh t0021-conversion.sh -i -v
* expecting success:
        git config filter.rot13.smudge ./rot13.sh &&
        git config filter.rot13.clean ./rot13.sh &&

        {
            echo "*.t filter=rot13"
            echo "*.i ident"
        } >.gitattributes &&

        {
            echo a b c d e f g h i j k l m
            echo n o p q r s t u v w x y z
            echo '$Id$'
        } >test &&
        cat test >test.t &&
        cat test >test.o &&
        cat test >test.i &&
        git add test test.t test.i &&
        rm -f test test.t test.i &&
        git checkout -- test test.t test.i

tr: Bad string.
error: external filter ./rot13.sh failed 1
error: waitpid (async) failed
error: external filter ./rot13.sh failed
tr: Bad string.
error: external filter ./rot13.sh failed 1
error: waitpid (async) failed
error: external filter ./rot13.sh failed
tr: Bad string.
error: external filter ./rot13.sh failed 1
error: waitpid (async) failed
error: external filter ./rot13.sh failed
*   ok 1: setup

* expecting success:

        cmp test.o test &&
        cmp test.o test.t &&

        # ident should be stripped in the repository
        git diff --raw --exit-code :test :test.i &&
        id=$(git rev-parse --verify :test) &&
        embedded=$(sed -ne "$script" test.i) &&
        test "z$id" = "z$embedded" &&

        git cat-file blob :test.t > test.r &&

        ./rot13.sh < test.o > test.t &&
        cmp test.r test.t

tr: Bad string.
* FAIL 2: check


                cmp test.o test &&
                cmp test.o test.t &&

                # ident should be stripped in the repository
                git diff --raw --exit-code :test :test.i &&
                id=$(git rev-parse --verify :test) &&
                embedded=$(sed -ne "$script" test.i) &&
                test "z$id" = "z$embedded" &&

                git cat-file blob :test.t > test.r &&

                ./rot13.sh < test.o > test.t &&
                cmp test.r test.t

xs5-trd-p1.grn:warmstro>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Solaris test failure for git-1.5.4.4 -- t0021-conversion.sh
  2008-03-11 12:33 Solaris test failure for git-1.5.4.4 -- t0021-conversion.sh Whit Armstrong
@ 2008-03-11 12:52 ` Johannes Schindelin
  2008-03-11 17:17   ` Johannes Sixt
  2008-03-11 16:55 ` Asheesh Laroia
  1 sibling, 1 reply; 13+ messages in thread
From: Johannes Schindelin @ 2008-03-11 12:52 UTC (permalink / raw)
  To: Whit Armstrong; +Cc: git

Hi,

On Tue, 11 Mar 2008, Whit Armstrong wrote:

> tr: Bad string.

What string?

> tr: Bad string.

What string?

> tr: Bad string.

What...

you get the idea.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Solaris test failure for git-1.5.4.4 -- t0021-conversion.sh
  2008-03-11 12:33 Solaris test failure for git-1.5.4.4 -- t0021-conversion.sh Whit Armstrong
  2008-03-11 12:52 ` Johannes Schindelin
@ 2008-03-11 16:55 ` Asheesh Laroia
  2008-03-11 17:14   ` Whit Armstrong
  1 sibling, 1 reply; 13+ messages in thread
From: Asheesh Laroia @ 2008-03-11 16:55 UTC (permalink / raw)
  To: Whit Armstrong; +Cc: git

On Tue, 11 Mar 2008, Whit Armstrong wrote:

> xs5-trd-p1.grn:warmstro> sh t0021-conversion.sh -i -v

Try running this as "sh -x t0021-conversion.sh -i -v".  That will print 
the exact commands run just before they are run, letting you figure 
out what tr is complaining about.

-- Asheesh.

-- 
I know what "custody" [of the children] means.  "Get even."  That's all
custody means.  Get even with your old lady.
 		-- Lenny Bruce

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Solaris test failure for git-1.5.4.4 -- t0021-conversion.sh
  2008-03-11 16:55 ` Asheesh Laroia
@ 2008-03-11 17:14   ` Whit Armstrong
  2008-03-11 17:35     ` Jeff King
  0 siblings, 1 reply; 13+ messages in thread
From: Whit Armstrong @ 2008-03-11 17:14 UTC (permalink / raw)
  To: Asheesh Laroia, Johannes Schindelin; +Cc: git

Thanks for the suggestion.  I found a few things in trash:

xs5-trd-p1.grn:warmstro> pwd
/home/warmstro/download/solaris/git-1.5.4.4/t/trash
xs5-trd-p1.grn:warmstro> cat rot13.sh
tr '[a-zA-Z]' '[n-za-mN-ZA-M]'
xs5-trd-p1.grn:warmstro> tr '[a-zA-Z]' '[n-za-mN-ZA-M]'
tr: Bad string.
xs5-trd-p1.grn:warmstro>

does that help, or do you need a bit more than that?

-Whit





On Tue, Mar 11, 2008 at 12:55 PM, Asheesh Laroia <asheesh@asheesh.org> wrote:
> On Tue, 11 Mar 2008, Whit Armstrong wrote:
>
>
> > xs5-trd-p1.grn:warmstro> sh t0021-conversion.sh -i -v
>
>  Try running this as "sh -x t0021-conversion.sh -i -v".  That will print
>  the exact commands run just before they are run, letting you figure
>  out what tr is complaining about.
>
>  -- Asheesh.
>
>  --
>  I know what "custody" [of the children] means.  "Get even."  That's all
>  custody means.  Get even with your old lady.
>                 -- Lenny Bruce
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Solaris test failure for git-1.5.4.4 -- t0021-conversion.sh
  2008-03-11 12:52 ` Johannes Schindelin
@ 2008-03-11 17:17   ` Johannes Sixt
  2008-03-11 17:35     ` David Kastrup
  0 siblings, 1 reply; 13+ messages in thread
From: Johannes Sixt @ 2008-03-11 17:17 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Whit Armstrong, git

Johannes Schindelin schrieb:
> Hi,
> 
> On Tue, 11 Mar 2008, Whit Armstrong wrote:
> 
>> tr: Bad string.
> 
> What string?

It's this tr, which is the implementation of ./rot13.sh:

   tr '[a-zA-Z]' '[n-za-mN-ZA-M]'

I can't tell what's wrong with it on Solaris, though.

-- Hannes

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Solaris test failure for git-1.5.4.4 -- t0021-conversion.sh
  2008-03-11 17:17   ` Johannes Sixt
@ 2008-03-11 17:35     ` David Kastrup
  0 siblings, 0 replies; 13+ messages in thread
From: David Kastrup @ 2008-03-11 17:35 UTC (permalink / raw)
  To: git

Johannes Sixt <j.sixt@viscovery.net> writes:

> Johannes Schindelin schrieb:
>> Hi,
>> 
>> On Tue, 11 Mar 2008, Whit Armstrong wrote:
>> 
>>> tr: Bad string.
>> 
>> What string?
>
> It's this tr, which is the implementation of ./rot13.sh:
>
>    tr '[a-zA-Z]' '[n-za-mN-ZA-M]'
>
> I can't tell what's wrong with it on Solaris, though.

The brackets?

-- 
David Kastrup

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Solaris test failure for git-1.5.4.4 -- t0021-conversion.sh
  2008-03-11 17:14   ` Whit Armstrong
@ 2008-03-11 17:35     ` Jeff King
  2008-03-11 17:40       ` Jeff King
  0 siblings, 1 reply; 13+ messages in thread
From: Jeff King @ 2008-03-11 17:35 UTC (permalink / raw)
  To: Whit Armstrong; +Cc: Asheesh Laroia, Johannes Schindelin, git

On Tue, Mar 11, 2008 at 01:14:39PM -0400, Whit Armstrong wrote:

> Thanks for the suggestion.  I found a few things in trash:
> 
> xs5-trd-p1.grn:warmstro> pwd
> /home/warmstro/download/solaris/git-1.5.4.4/t/trash
> xs5-trd-p1.grn:warmstro> cat rot13.sh
> tr '[a-zA-Z]' '[n-za-mN-ZA-M]'
> xs5-trd-p1.grn:warmstro> tr '[a-zA-Z]' '[n-za-mN-ZA-M]'
> tr: Bad string.
> xs5-trd-p1.grn:warmstro>
> 
> does that help, or do you need a bit more than that?

Looks like /usr/ucb/tr is OK with this, but /usr/bin/tr is not. Both
seem to handle the more verbose:

tr \
  'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' \
  'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM'

just fine.

-Peff

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Solaris test failure for git-1.5.4.4 -- t0021-conversion.sh
  2008-03-11 17:35     ` Jeff King
@ 2008-03-11 17:40       ` Jeff King
  2008-03-11 17:58         ` Whit Armstrong
  2008-03-12  4:11         ` Junio C Hamano
  0 siblings, 2 replies; 13+ messages in thread
From: Jeff King @ 2008-03-11 17:40 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Whit Armstrong, Asheesh Laroia, Johannes Schindelin, git

On Tue, Mar 11, 2008 at 01:35:37PM -0400, Jeff King wrote:

> Looks like /usr/ucb/tr is OK with this, but /usr/bin/tr is not. Both
> seem to handle the more verbose:
> 
> tr \
>   'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' \
>   'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM'

And here it is in patch form.

-- >8 --
t0021: tr portability fix for Solaris

Solaris' /usr/bin/tr doesn't seem to like multiple character
ranges in brackets (it simply prints "Bad string"). Instead,
let's just enumerate the transformation we want.

Signed-off-by: Jeff King <peff@peff.net>
---
 t/t0021-conversion.sh |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/t/t0021-conversion.sh b/t/t0021-conversion.sh
index cb86029..8fc39d7 100755
--- a/t/t0021-conversion.sh
+++ b/t/t0021-conversion.sh
@@ -5,7 +5,9 @@ test_description='blob conversion via gitattributes'
 . ./test-lib.sh
 
 cat <<\EOF >rot13.sh
-tr '[a-zA-Z]' '[n-za-mN-ZA-M]'
+tr \
+  'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' \
+  'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM'
 EOF
 chmod +x rot13.sh
 
-- 
1.5.4.3.621.g34987

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: Solaris test failure for git-1.5.4.4 -- t0021-conversion.sh
  2008-03-11 17:40       ` Jeff King
@ 2008-03-11 17:58         ` Whit Armstrong
  2008-03-12  4:11         ` Junio C Hamano
  1 sibling, 0 replies; 13+ messages in thread
From: Whit Armstrong @ 2008-03-11 17:58 UTC (permalink / raw)
  To: Jeff King; +Cc: Junio C Hamano, Asheesh Laroia, Johannes Schindelin, git

works great.  thanks.

running rest of test suite now.


On Tue, Mar 11, 2008 at 1:40 PM, Jeff King <peff@peff.net> wrote:
> On Tue, Mar 11, 2008 at 01:35:37PM -0400, Jeff King wrote:
>
>  > Looks like /usr/ucb/tr is OK with this, but /usr/bin/tr is not. Both
>  > seem to handle the more verbose:
>  >
>  > tr \
>  >   'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' \
>  >   'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM'
>
>  And here it is in patch form.
>
>  -- >8 --
>  t0021: tr portability fix for Solaris
>
>  Solaris' /usr/bin/tr doesn't seem to like multiple character
>  ranges in brackets (it simply prints "Bad string"). Instead,
>  let's just enumerate the transformation we want.
>
>  Signed-off-by: Jeff King <peff@peff.net>
>  ---
>   t/t0021-conversion.sh |    4 +++-
>   1 files changed, 3 insertions(+), 1 deletions(-)
>
>  diff --git a/t/t0021-conversion.sh b/t/t0021-conversion.sh
>  index cb86029..8fc39d7 100755
>  --- a/t/t0021-conversion.sh
>  +++ b/t/t0021-conversion.sh
>  @@ -5,7 +5,9 @@ test_description='blob conversion via gitattributes'
>   . ./test-lib.sh
>
>   cat <<\EOF >rot13.sh
>
> -tr '[a-zA-Z]' '[n-za-mN-ZA-M]'
>  +tr \
>  +  'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' \
>  +  'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM'
>   EOF
>   chmod +x rot13.sh
>
>  --
>  1.5.4.3.621.g34987
>
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Solaris test failure for git-1.5.4.4 -- t0021-conversion.sh
  2008-03-11 17:40       ` Jeff King
  2008-03-11 17:58         ` Whit Armstrong
@ 2008-03-12  4:11         ` Junio C Hamano
  2008-03-12 12:43           ` Jeff King
  1 sibling, 1 reply; 13+ messages in thread
From: Junio C Hamano @ 2008-03-12  4:11 UTC (permalink / raw)
  To: Jeff King; +Cc: Whit Armstrong, Asheesh Laroia, Johannes Schindelin, git

Jeff King <peff@peff.net> writes:

>> Looks like /usr/ucb/tr is OK with this, but /usr/bin/tr is not. Both
>> seem to handle the more verbose:
>> 
>> tr \
>>   'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' \
>>   'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM'

Besides tests, I think we have invocations of "tr" that Solaris people
might want to audit in the real scripts.  POSIX does not require [] around
the strings, but when from-string and to-string are of the same length,
having [] around them would not hurt (they transliterate to themselves)
and that is the only reason why we tend to use [] form to help potential
porters to ancient System V systems ;-)

filter-branch uses A-Z (BSD style) range which also is Kosher in POSIX but
will break historical System V that requires [] around ranges.

bisect has "tr '[\012]' ' '" which I think we can get rid of by rewriting
the users of the resulting string.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Solaris test failure for git-1.5.4.4 -- t0021-conversion.sh
  2008-03-12  4:11         ` Junio C Hamano
@ 2008-03-12 12:43           ` Jeff King
  2008-03-12 12:48             ` Jeff King
  0 siblings, 1 reply; 13+ messages in thread
From: Jeff King @ 2008-03-12 12:43 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Whit Armstrong, Asheesh Laroia, Johannes Schindelin, git

On Tue, Mar 11, 2008 at 09:11:28PM -0700, Junio C Hamano wrote:

> Besides tests, I think we have invocations of "tr" that Solaris people
> might want to audit in the real scripts.  POSIX does not require [] around
> the strings, but when from-string and to-string are of the same length,
> having [] around them would not hurt (they transliterate to themselves)
> and that is the only reason why we tend to use [] form to help potential
> porters to ancient System V systems ;-)

I'm not sure that it is always OK to just put in extra brackets, at
least in the case of multiple ranges. Consider the patch I just posted:

$ uname -a
SunOS tokyo 5.8 Generic_117350-47 sun4u sparc SUNW,Ultra-4

# what we have now, ok with bsd
$ echo foo | /usr/ucb/tr '[A-Za-z]' '[N-ZA-Mn-za-m]'
sbb

# what we have now, broken with SysV because of multiple ranges
echo foo | /usr/bin/tr '[A-Za-z]' '[N-ZA-Mn-za-m]'
Bad string

# potential fix, break multiple ranges. works with SysV
echo foo | /usr/bin/tr '[A-Z][a-z]' '[N-Z][A-M][n-z][a-m]'
sbb

# but here it breaks bsd
echo foo | /usr/ucb/tr '[A-Z][a-z]' '[N-Z][A-M][n-z][a-m]'
qzz


which makes no sense to me at all. If it were ignoring the duplicated
'[' on input, then I could understand a shift of one character. But
there is a shift of two characters.

> bisect has "tr '[\012]' ' '" which I think we can get rid of by rewriting
> the users of the resulting string.

This one is just being overzealous with the brackets. There is no need
for them unless there is a character sequence. This works correctly as

   tr '\012' ' '

at least using the Solaris SysV tr.

Below is a patch that fixes all of the problematic sites I found. Each
fix type was hand-tested with the Solaris SysV and UCB versions of tr,
and the tests ran successfully on Linux. On Solaris, I tried the tests
using /usr/bin/tr. However, I ran into problems with t1300, which tries:

  tr '\000' 'Q'

It seems that /usr/bin/tr silently removes NULs from the input stream:

  $ printf 'foo\000bar' | xxd
  0000000: 666f 6f00 6261 72                        foo.bar
  $ printf 'foo\000bar' | /usr/bin/tr '\000' 'Q' | xxd
  0000000: 666f 6f62 6172                           foobar

I don't think there is an easy way around this; we might have to switch
to using perl.

-- >8 --
tr portability fixes

Specifying character ranges in tr differs between System V
and POSIX. In System V, brackets are required (e.g.,
'[A-Z]'), whereas in POSIX they are not.

We can mostly get around this by just using the bracket form
for both sets, as in:

  tr '[A-Z] '[a-z]'

in which case POSIX interpets this as "'[' becomes '['",
which is OK.

However, this doesn't work with multiple sequences, like:

  # rot13
  tr '[A-Z][a-z]' '[N-Z][A-M][n-z][a-m]'

where the POSIX version does not behave the same as the
System V version. In this case, we must simply enumerate the
sequence.

This patch fixes problematic uses of tr in git scripts and
test scripts in one of three ways:

  - if a single sequence, make sure it uses brackets
  - if multiple sequences, enumerate
  - if extra brackets (e.g., tr '[A]' 'a'), eliminate
    brackets
---
 git-bisect.sh            |    4 ++--
 git-filter-branch.sh     |    4 ++--
 t/t4022-diff-rewrite.sh  |    5 ++++-
 t/t7003-filter-branch.sh |    2 +-
 4 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/git-bisect.sh b/git-bisect.sh
index 2c32d0b..48fb92d 100755
--- a/git-bisect.sh
+++ b/git-bisect.sh
@@ -293,14 +293,14 @@ bisect_next() {
 	bisect_next_check good
 
 	skip=$(git for-each-ref --format='%(objectname)' \
-		"refs/bisect/skip-*" | tr '[\012]' ' ') || exit
+		"refs/bisect/skip-*" | tr '\012' ' ') || exit
 
 	BISECT_OPT=''
 	test -n "$skip" && BISECT_OPT='--bisect-all'
 
 	bad=$(git rev-parse --verify refs/bisect/bad) &&
 	good=$(git for-each-ref --format='^%(objectname)' \
-		"refs/bisect/good-*" | tr '[\012]' ' ') &&
+		"refs/bisect/good-*" | tr '\012' ' ') &&
 	eval="git rev-list --bisect-vars $BISECT_OPT $good $bad --" &&
 	eval="$eval $(cat "$GIT_DIR/BISECT_NAMES")" &&
 	eval=$(filter_skipped "$eval" "$skip") &&
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 010353a..59cf023 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -58,8 +58,8 @@ eval "$functions"
 # "author" or "committer
 
 set_ident () {
-	lid="$(echo "$1" | tr "A-Z" "a-z")"
-	uid="$(echo "$1" | tr "a-z" "A-Z")"
+	lid="$(echo "$1" | tr "[A-Z]" "[a-z]")"
+	uid="$(echo "$1" | tr "[a-z]" "[A-Z]")"
 	pick_id_script='
 		/^'$lid' /{
 			s/'\''/'\''\\'\'\''/g
diff --git a/t/t4022-diff-rewrite.sh b/t/t4022-diff-rewrite.sh
index 6de4acb..bf996fc 100755
--- a/t/t4022-diff-rewrite.sh
+++ b/t/t4022-diff-rewrite.sh
@@ -8,7 +8,10 @@ test_expect_success setup '
 
 	cat ../../COPYING >test &&
 	git add test &&
-	tr 'a-zA-Z' 'n-za-mN-ZA-M' <../../COPYING >test
+	tr \
+	  "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" \
+	  "nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM" \
+	  <../../COPYING >test
 
 '
 
diff --git a/t/t7003-filter-branch.sh b/t/t7003-filter-branch.sh
index 6e14bf1..553131f 100755
--- a/t/t7003-filter-branch.sh
+++ b/t/t7003-filter-branch.sh
@@ -4,7 +4,7 @@ test_description='git-filter-branch'
 . ./test-lib.sh
 
 make_commit () {
-	lower=$(echo $1 | tr A-Z a-z)
+	lower=$(echo $1 | tr '[A-Z]' '[a-z]')
 	echo $lower > $lower
 	git add $lower
 	test_tick
-- 
1.5.4.3.613.gdd757

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: Solaris test failure for git-1.5.4.4 -- t0021-conversion.sh
  2008-03-12 12:43           ` Jeff King
@ 2008-03-12 12:48             ` Jeff King
  2008-03-12 13:11               ` Johannes Schindelin
  0 siblings, 1 reply; 13+ messages in thread
From: Jeff King @ 2008-03-12 12:48 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Whit Armstrong, Asheesh Laroia, Johannes Schindelin, git

On Wed, Mar 12, 2008 at 08:43:36AM -0400, Jeff King wrote:

> It seems that /usr/bin/tr silently removes NULs from the input stream:
> 
>   $ printf 'foo\000bar' | xxd
>   0000000: 666f 6f00 6261 72                        foo.bar
>   $ printf 'foo\000bar' | /usr/bin/tr '\000' 'Q' | xxd
>   0000000: 666f 6f62 6172                           foobar
> 
> I don't think there is an easy way around this; we might have to switch
> to using perl.

Even more exciting, /usr/bin/tr actually works going the opposite
direction, but /usr/ucb/tr doesn't:

  $ echo x | /usr/bin/tr x '\000' | xxd
  0000000: 000a                                     ..
  $ echo x | /usr/ucb/tr x '\000' | xxd
  0000000: 780a                                     x.

but other characters seem to work:

  $ echo x | /usr/ucb/tr x '\012' | xxd
  0000000: 0a0a                                     ..

-Peff

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Solaris test failure for git-1.5.4.4 -- t0021-conversion.sh
  2008-03-12 12:48             ` Jeff King
@ 2008-03-12 13:11               ` Johannes Schindelin
  0 siblings, 0 replies; 13+ messages in thread
From: Johannes Schindelin @ 2008-03-12 13:11 UTC (permalink / raw)
  To: Jeff King; +Cc: Junio C Hamano, Whit Armstrong, Asheesh Laroia, git

Hi,

On Wed, 12 Mar 2008, Jeff King wrote:

> On Wed, Mar 12, 2008 at 08:43:36AM -0400, Jeff King wrote:
> 
> > It seems that /usr/bin/tr silently removes NULs from the input stream:
> > 
> >   $ printf 'foo\000bar' | xxd
> >   0000000: 666f 6f00 6261 72                        foo.bar
> >   $ printf 'foo\000bar' | /usr/bin/tr '\000' 'Q' | xxd
> >   0000000: 666f 6f62 6172                           foobar
> > 
> > I don't think there is an easy way around this; we might have to switch
> > to using perl.
> 
> Even more exciting, /usr/bin/tr actually works going the opposite
> direction, but /usr/ucb/tr doesn't:
> 
>   $ echo x | /usr/bin/tr x '\000' | xxd
>   0000000: 000a                                     ..
>   $ echo x | /usr/ucb/tr x '\000' | xxd
>   0000000: 780a                                     x.
> 
> but other characters seem to work:
> 
>   $ echo x | /usr/ucb/tr x '\012' | xxd
>   0000000: 0a0a                                     ..

All the more reson to make more things builtin.  (I agree that for tests, 
we should stay with tr, though.)

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2008-03-12 13:11 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-03-11 12:33 Solaris test failure for git-1.5.4.4 -- t0021-conversion.sh Whit Armstrong
2008-03-11 12:52 ` Johannes Schindelin
2008-03-11 17:17   ` Johannes Sixt
2008-03-11 17:35     ` David Kastrup
2008-03-11 16:55 ` Asheesh Laroia
2008-03-11 17:14   ` Whit Armstrong
2008-03-11 17:35     ` Jeff King
2008-03-11 17:40       ` Jeff King
2008-03-11 17:58         ` Whit Armstrong
2008-03-12  4:11         ` Junio C Hamano
2008-03-12 12:43           ` Jeff King
2008-03-12 12:48             ` Jeff King
2008-03-12 13:11               ` Johannes Schindelin

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 NNTP newsgroup(s).