diff --git a/test/compare_file.c b/test/compare_file.c index 9dbf41b4..b458ed9f 100644 --- a/test/compare_file.c +++ b/test/compare_file.c @@ -88,7 +88,7 @@ int Compare_2_files(char *adr1, char *adr2, char *adrc, int flag) differs= 1; } } - if(S_ISREG(s2.st_mode) && s1.st_size!= s2.st_size) { + if(S_ISREG(s2.st_mode) && s1.st_size != s2.st_size) { printf("%s : st_size : %.f <> %.f\n", a, (double) s1.st_size, (double) s2.st_size); differs= 1; @@ -118,7 +118,7 @@ int Compare_2_files(char *adr1, char *adr2, char *adrc, int flag) printf("- %s : cannot open() : %s\n", adr1, strerror(errno)); return(0); } - fd2= open(adr1, O_RDONLY); + fd2= open(adr2, O_RDONLY); if(fd2==-1) { printf("- %s : cannot open() : %s\n", adr2, strerror(errno)); close(fd1); @@ -132,18 +132,25 @@ int Compare_2_files(char *adr1, char *adr2, char *adrc, int flag) if((r1==EOF && r2==EOF) || (r1==0 && r2==0)) break; if(r1==EOF || r1==0) { - printf("- %s : early EOF after %d bytes\n", adr1, r1count); + if(r1==EOF) + r1= 0; + if(s1.st_size > r1count + r1) + printf("- %s : early EOF after %d bytes\n", adr1, r1count); differs= 1; break; } r1count+= r1; if(r2==EOF || r2 r2count + r2) + printf("- %s : early EOF after %d bytes\n", adr2, r2count); differs= 1; break; } if(r2>r1) { - printf("- %s : early EOF after %d bytes\n", adr1, r1count); + if(s1.st_size > r1count + r1) + printf("- %s : early EOF after %d bytes\n", adr1, r1count); differs= 1; break; } @@ -157,8 +164,9 @@ int Compare_2_files(char *adr1, char *adr2, char *adrc, int flag) } } if(diffcount>0) { - printf("%s : Content differs by %.f bytes. First at %.f\n", - a, (double) diffcount, (double) first_diff); + printf("%s : %s : differs by at least %.f bytes. First at %.f\n", + a, (s1.st_size==s2.st_size || s1.st_mtime==s2.st_mtime ? + "CONTENT":"content"), (double) diffcount, (double) first_diff); differs= 1; } } @@ -170,13 +178,21 @@ int Compare_2_files(char *adr1, char *adr2, char *adrc, int flag) int main(int argc, char **argv) { - int ret; + int ret, i, with_ctime= 1; char adr1[4096], adr2[4096], adrc[4096]; if(argc<4) { fprintf(stderr, "usage: %s path prefix1 prefix2\n", argv[0]); exit(2); } + for(i= 4; i