use File::Path;
use File::Temp;
use File::stat;
+use MIME::Base64;
# Copyright (C) 2010 Zygo Blaxell <dm5@mailtoo.hungrycats.org>
return "$parent/$suffix";
}
+sub name_quad {
+ my ($int64) = @_;
+ my $packed = pack('Q', $int64);
+ $packed =~ s/^\0+//os;
+ my $base64_packed = encode_base64($packed, '');
+ # Don't strip off the trailing padding since it makes the string
+ # so short we end up just putting it back on again.
+ # $base64_packed =~ s/=+$//os;
+ return $base64_packed;
+}
+
+sub name_ino {
+ my ($ino) = @_;
+ return name_quad($ino) . 'I';
+}
+
# ext3 cannot handle more than 32000 links to a file. Leave some headroom.
# Arguably this should be configurable, but the losses are miniscule and
# the coding for option support is not.
next if ($st->nlink > $link_count_max);
# Check link to inode
- my $inode_link = prepare_parents($link_dir, $st->ino . 'I');
+ my $inode_link = prepare_parents($link_dir, name_ino($st->ino));
print STDERR 'I';
my $inode_st = lstat($inode_link);
my $update_links;
}
# A link to the inode indicates we are done, so do it last
- $inode_link = prepare_parents($link_dir, "${keep_ino}I");
+ $inode_link = prepare_parents($link_dir, name_ino($keep_ino));
print STDERR ' ';
link_files($digest_link, $inode_link);