From: Francois Fleuret Date: Thu, 11 Mar 2010 06:58:44 +0000 (+0100) Subject: Enforce the display of files from DIR1 before those from DIR2. X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=commitdiff_plain;h=14690a5a5110d5ef464bb33554c2ab9e9baa6dce;p=finddup.git Enforce the display of files from DIR1 before those from DIR2. --- diff --git a/finddup.c b/finddup.c index a8847f5..562cf5c 100644 --- a/finddup.c +++ b/finddup.c @@ -112,7 +112,7 @@ struct file_with_size { size_t size; ino_t inode; struct file_with_size *next; - int group_id; + int group_id, dir_id; }; void file_list_delete(struct file_with_size *head) { @@ -237,6 +237,7 @@ struct file_with_size *scan_directory(struct file_with_size *tail, tmp->size = sb.st_size; tmp->inode = sb.st_ino; tmp->group_id = -1; + tmp->dir_id = -1; tail = tmp; } } @@ -276,7 +277,13 @@ int compare_nodes(const void *x1, const void *x2) { } else if((*f1)->group_id > (*f2)->group_id) { return 1; } else { - return 0; + if((*f1)->dir_id < (*f2)->dir_id) { + return -1; + } else if((*f1)->dir_id > (*f2)->dir_id) { + return 1; + } else { + return 0; + } } } @@ -409,11 +416,13 @@ void start(const char *dirname1, const char *dirname2) { node1->group_id = node2->group_id; } else { node1->group_id = k; + node1->dir_id = 1; k++; } } if(node2->group_id < 0) { node2->group_id = node1->group_id; + node2->dir_id = 2; } } }