/usr/local/CPAN/Brackup/Brackup/Target/Filebased.pm


package Brackup::Target::Filebased;
use strict;
use warnings;
use base 'Brackup::Target';

# version >= 1.06: 01/23/0123456789abcdef...xxx.chunk
# 256 * 256 directories, then files.  would need 2 billion
# files before leaves have 32k+ files, but at that point
# users are probably using better filesystems if they
# have 2+ billion inodes.
sub chunkpath {
    my ($self, $dig) = @_;
    my @parts;
    my $fulldig = $dig;

    $dig =~ s/^\w+://; # remove the "hashtype:" from beginning
    $fulldig =~ s/:/./g if $self->nocolons; # Convert colons to dots if we've been asked to

    while (length $dig && @parts < 2) {
        $dig =~ s/^([0-9a-f]{2})// or die "Can't get 2 hex digits of $fulldig";
        push @parts, $1;
    }

    return join("/", @parts) . "/$fulldig.chunk";
}

sub metapath {
    my ($self, $name) = @_;

    $name ||= '';

    return "backups/$name";
}

1;