coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 2/2] tee: add --write-error to control handling of closed pip


From: Pádraig Brady
Subject: Re: [PATCH 2/2] tee: add --write-error to control handling of closed pipes
Date: Thu, 26 Feb 2015 09:30:24 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0

On 26/02/15 07:55, Bernhard Voelker wrote:
> On 02/17/2015 03:44 AM, Pádraig Brady wrote:
>> To improve the supported combinations we add these options:
>>
>>  --write-error=warn
>>    Warn if error writing any output including pipes.
>>    Allows continued writing to still open files/pipes.
>>    Exit status is failure if any output had error.
>>  --write-error=warn-nopipe, -p
>>    Warn if error writing any output except pipes.
>>    Allows continued writing to still open files/pipes.
>>    Exit status is failure if any non pipe output had error.
>>  --write-error=exit
>>    Exit if error writing any output including pipes.
>>  --write-error=exit-nopipe
>>    Exit if error writing any output except pipes.
> 
> I know I'm a bit late on this.  I like it and the patch looks good
> to me.  Just 2 comments.
> 
>> diff --git a/NEWS b/NEWS
>> index b6795aa..0ccadde 100644
>> --- a/NEWS
>> +++ b/NEWS
>> @@ -58,6 +58,8 @@ GNU coreutils NEWS                                    -*- 
>> outline -*-
>>    sync no longer ignores arguments, and syncs each specified file, or with 
>> the
>>    --file-system option, the file systems associated with each specified 
>> file.
>>  
>> +  tee accepts a new --write-error option to control operation with pipes.
>> +
> 
> As this new option can also changes the exit behavior, i.e., exit early,
> in the case of no pipes ...
> 
>   $ seq 10 | src/tee --write-error=exit /dev/full > /dev/null
>   src/tee: /dev/full: No space left on device
> 
> ... shouldn't the NEWS enrty mention this, too?

Yep, s/pipes/pipes and general output errors/

> 
> I stumbled upon another gap in the POSIX specification: it does not
> mention how tee(1) should react when another error than a write() error
> happens.  Well, it should exit with a an error value, that's clear.
> But as it already special-cases that tee should continue writing to
> other outputs when a write error has happened, I think POSIX should
> also clarify other errors. E.g. open(1) errors:
> 
>   mkdir dir
>   seq 10 | src/tee dir >/dev/null
>   src/tee: dir: Is a directory
> 
> Currently, tee also continues after open() errors - which I probably
> wouldn't expect as a user.

Very good point.
Perhaps we should generalize this to --on-error to cater for all cases?

I'm away for a few days now.

later,

thanks for the review,
Pádraig.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]