projects
/
finddup.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Catch the realpath errors.
[finddup.git]
/
finddup.c
diff --git
a/finddup.c
b/finddup.c
index
05c3999
..
7d5b058
100644
(file)
--- a/
finddup.c
+++ b/
finddup.c
@@
-254,12
+254,17
@@
struct file_with_size *scan_directory(struct file_with_size *tail,
void print_file(struct file_with_size *node) {
char tmp[PATH_MAX + 1];
if(show_realpaths) {
void print_file(struct file_with_size *node) {
char tmp[PATH_MAX + 1];
if(show_realpaths) {
- if(show_groups) {
- realpath(node->filename, tmp);
- printf("%d %s\n", node->group_id, tmp);
+ if(realpath(node->filename, tmp)) {
+ if(show_groups) {
+ printf("%d %s\n", node->group_id, tmp);
+ } else {
+ printf("%s\n", tmp);
+ }
} else {
} else {
- realpath(node->filename, tmp);
- printf("%s\n", tmp);
+ printf("Can not get the realpath of \"%s\": %s\n",
+ node->filename,
+ strerror(errno));
+ exit(EXIT_FAILURE);
}
} else {
if(show_groups) {
}
} else {
if(show_groups) {
@@
-361,7
+366,8
@@
void start(const char *dirname1, const char *dirname2) {
struct file_with_size *list1, *list2;
struct file_with_size *node1, *node2;
int not_in, found;
struct file_with_size *list1, *list2;
struct file_with_size *node1, *node2;
int not_in, found;
- int k, pp, l1, n;
+ int nb_groups, nb_nodes;
+ int list1_length, previous_progress;
char *buffer1 = safe_malloc(sizeof(char) * READ_BUFFER_SIZE);
char *buffer2 = safe_malloc(sizeof(char) * READ_BUFFER_SIZE);
char *buffer1 = safe_malloc(sizeof(char) * READ_BUFFER_SIZE);
char *buffer2 = safe_malloc(sizeof(char) * READ_BUFFER_SIZE);
@@
-395,15
+401,15
@@
void start(const char *dirname1, const char *dirname2) {
fprintf(stderr, "done.\n");
}
fprintf(stderr, "done.\n");
}
-
k
= 0;
- p
p
= -1;
- n = 0;
- l
1
= file_list_length(list1);
+
nb_groups
= 0;
+ p
revious_progress
= -1;
+ n
b_nodes
= 0;
+ l
ist1_length
= file_list_length(list1);
if(not_in) {
for(node1 = list1; node1; node1 = node1->next) {
if(not_in) {
for(node1 = list1; node1; node1 = node1->next) {
- print_progress(l
1, n, &pp
);
- n++;
+ print_progress(l
ist1_length, nb_nodes, &previous_progress
);
+ n
b_nodes
++;
found = 0;
found = 0;
@@
-424,8
+430,8
@@
void start(const char *dirname1, const char *dirname2) {
} else {
for(node1 = list1; node1; node1 = node1->next) {
} else {
for(node1 = list1; node1; node1 = node1->next) {
- print_progress(l
1, n, &pp
);
- n++;
+ print_progress(l
ist1_length, nb_nodes, &previous_progress
);
+ n
b_nodes
++;
for(node2 = list2; node2; node2 = node2->next) {
if(node1->group_id < 0 || node2->group_id < 0) {
for(node2 = list2; node2; node2 = node2->next) {
if(node1->group_id < 0 || node2->group_id < 0) {
@@
-434,9
+440,9
@@
void start(const char *dirname1, const char *dirname2) {
if(node2->group_id >= 0) {
node1->group_id = node2->group_id;
} else {
if(node2->group_id >= 0) {
node1->group_id = node2->group_id;
} else {
- node1->group_id =
k
;
+ node1->group_id =
nb_groups
;
node1->dir_id = 1;
node1->dir_id = 1;
-
k
++;
+
nb_groups
++;
}
}
if(node2->group_id < 0) {
}
}
if(node2->group_id < 0) {