Due to a bug in mmap() the address space isn't counted against ulimit
until the page is faulted in - so mmapping a large file suceeds, but
cmp SIGSEGVs when it runs out of address space.
Also I don't believe that the madvise( MAP_SEQUENTIAL) has the desired
effect, and mmaping a large file is probably very bad for the UBC.
some memory in case the mmapped contents would be changed and this fails
for very large files; it's unnecessary anyway, cmp(1) does not change file
contents in any way.
This fixes bin/10625 by Uwe Klaus.
While here, change the code to fallback to classic stdio if mmap fails.
flag a short read on the 2nd file as an EOF when it isn't. This implementation
differs in that at most one read is done per file per comparison, so that an
early mismatch may avoid hanging on input or continuing some expensive process
if reading from a pipe.
EOF message printed to stderr.
Removed bogositys wrt. getopt() processing (special casing `-' is unnecessary).
Updated usage message to document fact that -s and -l options are mutually
exclusive.