Subject: bug#18449: "cat x >> x" error even when x is empty

From: Leslie S Satenstein <[email-masked]>
Date: Thu, 11 Sep 2014 06:31:46 -0700

With my Fedora version,   there is an error message   (input file is output file)

 cat x >x
cat: x: input file is output file

Regards 

 Leslie

>________________________________
> From: Pádraig Brady <[email-masked]>
>To: Vincent Lefevre <[email-masked]>; [email-masked] 
>Sent: Thursday, September 11, 2014 9:20 AM
>Subject: bug#18449: "cat x >> x" error even when x is empty
> 
>
>On 09/11/2014 02:00 PM, Vincent Lefevre wrote:
>> With coreutils 8.23 under Debian/unstable:
>> 
>> ypig% : > x
>> ypig% cat x >> x
>> cat: x: input file is output file
>> ypig% POSIXLY_CORRECT=1 cat x >> x
>> cat: x: input file is output file
>> 
>> while there's no reason to return an error in this case: the file
>> should just remain empty. Using the same file for input and output
>> isn't disallowed by POSIX, AFAIK.
>> 
>> This may not seem really useful here, but this can potentially break
>> scripts with things like:
>> 
>>   cat "$foo" >> "$bar"
>> 
>> where "$foo" may be the same file as "$bar" only if it is empty.
>
>I'm struggling to see that use case TBH.
>
>
>> BTW, when x isn't empty, I wonder whether an error is correct if
>> POSIXLY_CORRECT is set. The result will typically depend on the
>> implementation and possibly be non-deterministic, but POSIX doesn't
>> seem to allow an error (except FS errors, such as disk full).
>
>This is just a protection against non deterministic usage.
>I.E. if there is data in the file then it'll probably run
>until the file system is exhausted.  This is what happens
>on FreeBSD BTW, though I see that Solaris has the same
>protections as GNU.
>
>I wouldn't be on for removing this protection which
>has existed from the initial GNU implementation.
>
>cheers,
>Pádraig.
>
>
>
>
>
>
>