dupemerge: don't stat during the file collection loop
[dupemerge] / faster-dupemerge
index 9920a26bf2bb531bd2a22f2339b83c601aee2cb3..aa8b142ceeab5bc2390aa7fcc4abef9a10719cc5 100755 (executable)
@@ -340,10 +340,11 @@ hash_file:
                        print STDERR "\t\tDigesting file $filename\n" if $debug;
                        if ((-l $filename) || ! -f _) {
                                warn "Bogon file " . tick_quote($filename);
-                               $surprises++;
+                               $input_bogons++;
+                               delete $inode_to_file_name{$candidate}->{$filename};
                                next;
                        }
-                       eval { 
+                       eval {
                                $digest = digest($filename); 
                        };
                        if ($@) {
@@ -562,10 +563,10 @@ candidate_file:
                        delete $inode_to_file_name{$candidate};
                }
        }
+       print STDERR '.' if $progress;
 
 end_merge:
 
-       print STDERR '.' if $progress;
        print STDERR "Merge done.\n" if $debug;
        undef %inode_to_file_name;
 }
@@ -578,12 +579,6 @@ while (<FIND>) {
 
        print STDERR "weak_key=$weak_key inode=$inode name=$name\n" if $debug;
 
-       unless (! (-l $name) && (-f _)) {
-               warn "Bogon file " . tick_quote($name);
-               $input_bogons++;
-               next;
-       }
-
        $input_links++;
        merge_files if $weak_key ne $current_key;
        $current_key = $weak_key;