emacs-bug-tracker
[Top][All Lists]
Advanced

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

[debbugs-tracker] bug#18449: closed ("cat x >> x" error even when x is e


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#18449: closed ("cat x >> x" error even when x is empty)
Date: Thu, 11 Sep 2014 15:53:01 +0000

Your message dated Thu, 11 Sep 2014 08:52:17 -0700
with message-id <address@hidden>
and subject line Re: bug#18449: "cat x >> x" error even when x is empty
has caused the debbugs.gnu.org bug report #18449,
regarding "cat x >> x" error even when x is empty
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
18449: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=18449
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: "cat x >> x" error even when x is empty Date: Thu, 11 Sep 2014 15:00:44 +0200 User-agent: Mutt/1.5.23-6361-vl-r59709 (2014-07-25)
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.

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).

-- 
Vincent Lefèvre <address@hidden> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)



--- End Message ---
--- Begin Message --- Subject: Re: bug#18449: "cat x >> x" error even when x is empty Date: Thu, 11 Sep 2014 08:52:17 -0700 User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0
Eric Blake wrote:
Testing for an empty file is enough of an additional special case over
the existing check for same files that I don't think it is worth it.

It's a really cheap check, as a system call is needed only when the input and output files are the same, and even then it's only an lseek with SEEK_CUR so it's all in-memory. Plus, the POSIX 'cat' spec gives an example of using 'cat' to copy an empty regular file to itself, and (not unreasonably) says that should work.

As far as POSIX conformance goes, I don't think we need to worry about POSIXLY_CORRECT here. We'll get POSIX fixed instead. Eric has already started the ball rolling on that (thanks). Though the POSIX fix should involve updating its example -- and quite possibly POSIX should continue to allow catting an empty file to itself.

I installed the attached patch and am marking this as done. The 'cat' source code is simpler now, so that's a win anyway....

Attachment: 0001-cat-allow-copying-empty-files-to-themselves.patch
Description: Text document


--- End Message ---

reply via email to

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