summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/AniDB/Hashing.pm17
-rw-r--r--lib/AniDB/Manager.pm2
2 files changed, 18 insertions, 1 deletions
diff --git a/lib/AniDB/Hashing.pm b/lib/AniDB/Hashing.pm
new file mode 100644
index 0000000..6527756
--- /dev/null
+++ b/lib/AniDB/Hashing.pm
@@ -0,0 +1,17 @@
+package AniDB::Hashing;
+use 5.024;
+use strict;
+use warnings;
+use experimental 'signatures';
+use Digest::ED2K;
+use namespace::clean;
+
+sub hash_fh($fh) {
+ my $digest = Digest::ED2K->new;
+ while (my $bytes_read = $fh->sysread($buffer,1024*1024)) {
+ $digest->add($buffer);
+ }
+ return $digest->hexdigest;
+}
+
+1;
diff --git a/lib/AniDB/Manager.pm b/lib/AniDB/Manager.pm
index ee9d48e..a5c9686 100644
--- a/lib/AniDB/Manager.pm
+++ b/lib/AniDB/Manager.pm
@@ -50,7 +50,7 @@ has hash_function => (
sub _build_hash_function {
require AniDB::Hashing;
- return \&AniDB::Hashing::hash_fd;
+ return \&AniDB::Hashing::hash_fh;
}
sub new_name_for($self,$path) {