Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 29 Aug 2010 23:00:44 +0200
From:      Jilles Tjoelker <jilles@stack.nl>
To:        Anonymous <swell.k@gmail.com>
Cc:        Alexander Best <arundel@freebsd.org>, freebsd-hackers@freebsd.org
Subject:   Re: tiny patch to prevent head from closing pipes
Message-ID:  <20100829210044.GB60715@stack.nl>
In-Reply-To: <86aao694tm.fsf@gmail.com>
References:  <20100828141625.GA69240@freebsd.org> <86aao694tm.fsf@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Aug 28, 2010 at 06:42:29PM +0400, Anonymous wrote:
> Alexander Best <arundel@freebsd.org> writes:

> > i just had subversion complain about a broken pipe while piping its
> > output through awk straight to head [1]. i decided to add a switch
> > to head which will tell it to never close a pipe unless the input
> > has stopped [2].

> You can do same with sh(1), e.g.

>   $ svn log | (IFS=; while read li; do [ $((i+=1)) -le 10 ] && echo "$li"; done)

> versus

>   $ svn log | (IFS=; while read li && [ $((i+=1)) -le 10 ]; do echo "$li"; done)
>   ...
>   svn: Write error: Broken pipe

Even easier (and avoiding mangling through read) is
  svn log | { head; cat >/dev/null; }
Beware that the cat command will not necessarily get all of the input.
head may buffer reads and it is unable to push the extra data back onto
the pipe.

> But I think subversion should

I think Subversion should not print an error message for broken pipe on
its stdout.

> > there's probably a much more efficient way of discarding the input
> > without closing the pipe unless the input ceased. it's just a 5
> > minute hack in order to see if people find the idea useful or not.
> > ;)

> Can you give an example of usefulness that does not involve subversion?

-- 
Jilles Tjoelker



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100829210044.GB60715>