I just read the reasoning in the LFS document for the 'open protection'.
In theory, cat could work on large files. In practice, they say, cat
implementations use fstat to determine whether input file and output
file are identical. If the file is larger than 2GB, this should fail.
So cat would fail on a large files even if the open protection would
be dropped.
Also, they say, letting it fail later on is no guarantee - because
applications are known to trust calls like fstat and lseek to succeed
if they are sure the file handle is valid. They would then silently
corrupt the file. They say that this has been actually observed on
real-world programs.
Now, we all know that such errors are never made in GNU software - but
this transitional compatibility is about commercial software, right?
:-)
Regards,
Martin