tiny patch to prevent head from closing pipes

Alexander Best arundel at freebsd.org
Sat Aug 28 16:01:29 UTC 2010


On Sat Aug 28 10, Anonymous wrote:
> Alexander Best <arundel at freebsd.org> writes:
> 
> > hi there,
> >
> > 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
> 
> 
> But I think subversion should
> 
> > 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?

no, but this should be valid for all applications which return an error if the
pipe gets closed by the receiving end.

of course it's possible to implement the features to head i added in form of a
sh(1) script. i understand that your point is, that there is already a way of
keeping the pipe open and that the unix philosophy states that no two programs
should share the same functionality.

on the other hand you don't really need head and tail at all then, because
their functionality could also be implemented in form of a script. ;) i hope
you get my point.

cheers.
alex

-- 
a13x


More information about the freebsd-hackers mailing list