Catch the realpath errors.
authorFrancois Fleuret <francois@fleuret.org>
Sat, 13 Mar 2010 11:06:21 +0000 (12:06 +0100)
committerFrancois Fleuret <francois@fleuret.org>
Sat, 13 Mar 2010 11:06:21 +0000 (12:06 +0100)
finddup.c

index 098a623..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) {
-    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 {
-      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) {