Digest::SHA: deprecate Digest::SHA1, bump version to 0.20120914 and copyright year...
[dupemerge] / faster-dupemerge
index ef86fbb4898306a0d0805cf49679c3758424120e..62f4bc99c47b401bff653a252366eb9ef11e28e2 100755 (executable)
@@ -4,7 +4,7 @@ use Fcntl qw(:DEFAULT :flock);
 use File::Compare;
 use File::Temp;
 
-# Copyright (C) 2002-2010 Zygo Blaxell <faster-dupemerge@mailtoo.hungrycats.org>
+# Copyright (C) 2002-2012 Zygo Blaxell <faster-dupemerge@mailtoo.hungrycats.org>
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -42,11 +42,11 @@ my $lost_bytes = 0;
 my $surprises = 0;
 
 eval '
-       use Digest::SHA1 qw(sha1 sha1_hex sha1_base64);
+       use Digest::SHA qw(sha1 sha1_hex sha1_base64);
 ';
 
 if ($@) {
-       warn "Digest::SHA1: $@\nUsing external md5sum program to generate hashes.\nPlease install Digest::SHA1 (libdigest-sha1-perl)";
+       warn "Digest::SHA: $@\nUsing external md5sum program to generate hashes.\nPlease install Digest::SHA";
 
        eval <<'DIGEST';
                sub really_digest {
@@ -72,7 +72,7 @@ DIGEST
                sub really_digest {
                        my ($filename) = (@_);
                        die "'$filename' is not a plain file" if (-l $filename) || ! (-f _);
-                       my $ctx = Digest::SHA1->new;
+                       my $ctx = Digest::SHA->new;
                        sysopen(FILE, $filename, O_RDONLY|O_NONBLOCK) or die "open: $filename: $!";
                        binmode(FILE);          # FIXME:  Necessary?  Probably harmless...
                        $ctx->addfile(\*FILE);
@@ -161,7 +161,8 @@ hard links).
 
         --timestamps    mtime may be different for identical files
 
-        --skip-compare  skip byte-by-byte file comparisons
+        --skip-compare  skip byte-by-byte file comparisons,
+                        compare only file hashes
 
         --skip-hash[=N] skip calculation of hash function on files
                         larger than N bytes (default 1M).
@@ -174,6 +175,12 @@ hard links).
         --verbose       report files as they are considered
 
         --zeros         hard-link zero-length files too
+
+--skip-compare and --skip-hash can be combined, in which case a file is
+either hashed (if it is below the --skip-hash size threshold) or compared
+(if it is above), but never both.
+
+Version:  0.20120914
 USAGE
 }
 
@@ -242,7 +249,7 @@ while ($#ARGV >= 0) {
        }
 }
 
-@directories or usage;
+@directories or usage($0);
 
 if (defined($lock_file) && !$dry_run) {
        sysopen(LOCK_FILE, $lock_file, O_CREAT|O_RDONLY, 0666) or die "open: $lock_file: $!";
@@ -665,7 +672,7 @@ if ($humane) {
 
        sub space_numbers {
                my ($num) = @_;
-               1 while $num =~ s/(\d)(\d\d\d)( \d\d\d)*$/$1 $2$3/os;
+               1 while $num =~ s/(\d)(\d\d\d)((?: \d\d\d)*)$/$1 $2$3/os;
                $num = ' ' x ($max_num_len - length($num)) . $num;
                return $num;
        }