[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: grep-2.10 on OSF/1
From: |
Eric Blake |
Subject: |
Re: grep-2.10 on OSF/1 |
Date: |
Mon, 21 Nov 2011 16:00:17 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20110930 Thunderbird/7.0.1 |
[adding bug-gnulib]
>>>> How about having compare "know" about /dev/null.
>>>> Then it can perform the test -s and warn if the file is nonempty.
>>>> With that, all existing (and there are many) /dev/null-using
>>>> compare uses will benefit.
>>
>> Nice idea.
> Yes. In fact, c-set was against gnulib's init.sh
> (hence included ChangeLog diffs)
>
> Here's the proposed gnulib commit.
ACK once you fix the comments.
>
>>From e636d67f6ff4116312c789d4eec2af53b9cd7cd9 Mon Sep 17 00:00:00 2001
> From: Jim Meyering <address@hidden>
> Date: Mon, 21 Nov 2011 21:50:23 +0100
> Subject: [PATCH] init.sh: work around OSF/1 5.1's mishandling of /dev/null
>
> * tests/init.sh: Make our compare function slightly more portable.
> Reported by Bruno Haible in
> http://thread.gmane.org/gmane.comp.gnu.grep.bugs/4020
> Much improved by Eric Blake.
> ---
> ChangeLog | 8 ++++++++
> tests/init.sh | 47 +++++++++++++++++++++++++++++++++++++++++------
> 2 files changed, 49 insertions(+), 6 deletions(-)
>
> diff --git a/ChangeLog b/ChangeLog
> index e775587..0fbcf89 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,11 @@
> +2011-11-21 Jim Meyering <address@hidden>
> + Eric Blake <address@hidden>
> +
> + init.sh: work around OSF/1 5.1's mishandling of /dev/null
> + * tests/init.sh: Make our compare function slightly more portable.
> + Reported by Bruno Haible in
> + http://thread.gmane.org/gmane.comp.gnu.grep.bugs/4020
> +
> 2011-11-21 Simon Josefsson <address@hidden>
>
> * m4/gnulib-common.m4 (_Noreturn): Check that _MSC_VER is defined
> diff --git a/tests/init.sh b/tests/init.sh
> index c78e5b6..68e1f4f 100644
> --- a/tests/init.sh
> +++ b/tests/init.sh
> @@ -221,11 +221,35 @@ export MALLOC_PERTURB_
> # a partition, or to undo any other global state changes.
> cleanup_ () { :; }
>
> +# Arrange not to let diff or cmp operate on /dev/null,
> +# since on some systems (at least OSF/1 5.1), that doesn't work.
> +# When there are not two arguments, return 2.
Should be:
# When there are not two arguments, or neither argument
# is /dev/null, return 2.
> +# When one argument is /dev/null and the other is not empty,
> +# cat the nonempty file to stderr and return 1.
> +# Otherwise, return 0.
> +compare_dev_null_ ()
> +{
> + test $# = 2 || return 2
> +
> + if test "x$1" = x/dev/null; then
> + set dummy "$2" "$1"; shift
> + fi
> +
> + test "x$2" = x/dev/null || return 2
> +
> + test -s "$1" || return 0
> +
> + cat - "$1" <<EOF >&2
> +Unexpected contents of $1:
> +EOF
> + return 1
> +}
> +
> if diff_out_=`( diff -u "$0" "$0" < /dev/null ) 2>/dev/null`; then
> if test -z "$diff_out_"; then
> - compare () { diff -u "$@"; }
> + compare_ () { diff -u "$@"; }
> else
> - compare ()
> + compare_ ()
> {
> if diff -u "$@" > diff.out; then
> # No differences were found, but Solaris 'diff' produces output
> @@ -241,9 +265,9 @@ if diff_out_=`( diff -u "$0" "$0" < /dev/null )
> 2>/dev/null`; then
> fi
> elif diff_out_=`( diff -c "$0" "$0" < /dev/null ) 2>/dev/null`; then
> if test -z "$diff_out_"; then
> - compare () { diff -c "$@"; }
> + compare_ () { diff -c "$@"; }
> else
> - compare ()
> + compare_ ()
> {
> if diff -c "$@" > diff.out; then
> # No differences were found, but AIX and HP-UX 'diff' produce output
> @@ -259,11 +283,22 @@ elif diff_out_=`( diff -c "$0" "$0" < /dev/null )
> 2>/dev/null`; then
> }
> fi
> elif ( cmp --version < /dev/null 2>&1 | grep GNU ) > /dev/null 2>&1; then
> - compare () { cmp -s "$@"; }
> + compare_ () { cmp -s "$@"; }
> else
> - compare () { cmp "$@"; }
> + compare_ () { cmp "$@"; }
> fi
>
> +# Given compare_dev_null_'s preprocessing, for 0 or 2, defer to compare_.
> +# Otherwise, differences have already been printed, so return 1.
Should be:
# Given compare_dev_null_'s preprocessing, defer to compare_ if 2 or
# more. Otherwise, result is correctly 0, or 1 with error output.
> +compare ()
> +{
> + compare_dev_null_ "$@"
> + case $? in
> + 0|1) return $?;;
> + *) compare_ "$@";;
> + esac
> +}
> +
> # An arbitrary prefix to help distinguish test directories.
> testdir_prefix_ () { printf gt; }
>
> --
> 1.7.8.rc2.3.g0911
>
--
Eric Blake address@hidden +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
- Re: grep-2.10 on OSF/1,
Eric Blake <=