Index: cmp.c =================================================================== --- cmp.c (revision 232145) +++ cmp.c (working copy) @@ -138,8 +138,8 @@ char c1, c2; /* character from each file */ int differ; /* set if files differ and -l option */ int fd1, fd2; -int fd1_nread; -int fd2_nread; +int fd1_nread,prev_fd1_nread; +int fd2_nread,prev_fd2_nread; char file1buf[STATIC_BUFSIZE]; char file2buf[STATIC_BUFSIZE]; /*----------------------------------------------------------- main --------- @@ -229,6 +229,11 @@ fprintf( stderr, S_EOF_FORMAT, fd1_nread==0 ? file1 : file2 ); exit( differ ? IO_ERROR_RC : FILES_DIFFER_RC ); } /* if */ + if(prev_fd1_nread != prev_fd2_nread ) { + if ( silent == FALSE ) + fprintf( stderr, S_EOF_FORMAT, prev_fd1_nread < prev_fd2_nread ? file1 : file2 ); + exit( differ ? IO_ERROR_RC : FILES_DIFFER_RC ); + } } if(memcmp(file1buf,file2buf,min(fd1_nread,fd2_nread))) { @@ -257,6 +262,8 @@ if((file1buf[i] == '\n') || (file2buf[i] == '\n')) line_count++; } + prev_fd1_nread = fd1_nread; + prev_fd2_nread = fd2_nread; } /* for */ return ( differ ? FILES_DIFFER_RC : FILES_ARE_IDENTICAL_RC );