You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.0 KiB
59 lines
2.0 KiB
diff -urNp fdupes-1.50-PR2.orig/fdupes.c fdupes-1.50-PR2/fdupes.c
|
|
--- fdupes-1.50-PR2.orig/fdupes.c 2009-01-31 20:11:49.577968848 +0530
|
|
+++ fdupes-1.50-PR2/fdupes.c 2009-01-31 22:01:11.872219443 +0530
|
|
@@ -492,7 +492,10 @@ file_t **checkmatch(filetree_t **root, f
|
|
else {
|
|
if (checktree->file->crcpartial == NULL) {
|
|
crcsignature = getcrcpartialsignature(checktree->file->d_name);
|
|
- if (crcsignature == NULL) return NULL;
|
|
+ if (crcsignature == NULL) {
|
|
+ errormsg ("cannot read file %s\n", checktree->file->d_name);
|
|
+ return NULL;
|
|
+ }
|
|
|
|
checktree->file->crcpartial = (char*) malloc(strlen(crcsignature)+1);
|
|
if (checktree->file->crcpartial == NULL) {
|
|
@@ -504,7 +507,10 @@ file_t **checkmatch(filetree_t **root, f
|
|
|
|
if (file->crcpartial == NULL) {
|
|
crcsignature = getcrcpartialsignature(file->d_name);
|
|
- if (crcsignature == NULL) return NULL;
|
|
+ if (crcsignature == NULL) {
|
|
+ errormsg ("cannot read file %s\n", file->d_name);
|
|
+ return NULL;
|
|
+ }
|
|
|
|
file->crcpartial = (char*) malloc(strlen(crcsignature)+1);
|
|
if (file->crcpartial == NULL) {
|
|
@@ -577,8 +583,8 @@ file_t **checkmatch(filetree_t **root, f
|
|
|
|
int confirmmatch(FILE *file1, FILE *file2)
|
|
{
|
|
- unsigned char c1 = 0;
|
|
- unsigned char c2 = 0;
|
|
+ unsigned char c1[CHUNK_SIZE];
|
|
+ unsigned char c2[CHUNK_SIZE];
|
|
size_t r1;
|
|
size_t r2;
|
|
|
|
@@ -586,14 +592,13 @@ int confirmmatch(FILE *file1, FILE *file
|
|
fseek(file2, 0, SEEK_SET);
|
|
|
|
do {
|
|
- r1 = fread(&c1, sizeof(c1), 1, file1);
|
|
- r2 = fread(&c2, sizeof(c2), 1, file2);
|
|
+ r1 = fread(c1, 1, sizeof(c1), file1);
|
|
+ r2 = fread(c2, 1, sizeof(c2), file2);
|
|
|
|
- if (c1 != c2) return 0; /* file contents are different */
|
|
- } while (r1 && r2);
|
|
+ if (r1 != r2) return 0; /* file lengths are different */
|
|
+ if (memcmp (c1, c2, r1)) return 0; /* file contents are different */
|
|
+ } while (r2);
|
|
|
|
- if (r1 != r2) return 0; /* file lengths are different */
|
|
-
|
|
return 1;
|
|
}
|
|
|