bug-coreutils
[Top][All Lists]
Advanced

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

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


From: Pádraig Brady
Subject: bug#18449: "cat x >> x" error even when x is empty
Date: Thu, 11 Sep 2014 14:20:06 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130110 Thunderbird/17.0.2

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.





reply via email to

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