diff -r e91f117472ed -r 91b6adaef325 bin/imager.save --- a/bin/imager.save Fri Aug 05 13:36:39 2011 +0200 +++ b/bin/imager.save Mon Jun 18 16:54:02 2012 +0200 @@ -6,7 +6,6 @@ use POSIX qw(strftime); use autodie qw(:all); use Digest::MD5 qw(md5_hex); -use File::Path qw(mkpath); use File::Basename; use File::Temp; use Sys::Hostname; @@ -14,6 +13,7 @@ use Hash::Util qw(lock_keys); use Getopt::Long; use Pod::Usage; +use Fops; use constant KiB => 1024; use constant MiB => 1024 * KiB; @@ -39,6 +39,7 @@ lock_keys(%o); my $NOW = time(); +my $FOPS; MAIN: { GetOptions( @@ -69,6 +70,8 @@ or pod2usage; my $dst = pop @ARGV; + $FOPS = Fops->new(native => $dst); + foreach my $src (@ARGV) { if (my $pid = fork()) { next; @@ -86,20 +89,21 @@ sub save { my ($src, $dst) = @_; - my $idx = "{DIR}/idx/{HOSTNAME}/{DEVICE}/"; - my $data = "{DIR}/data"; - my $info = "{DIR}/data/info"; + my $idx = "/idx/{HOSTNAME}/{DEVICE}/"; + my $data = "/data"; + my $info = "/data/info"; my $size; foreach ($idx, $data, $info) { - s/{DIR}/$dst/g; s/{HOSTNAME}/hostname/eg; s/{DEVICE}/get_devname($src)/eg; } $size = get_devsize($src); - -d $dst or die "$0: $dst: $!\n"; - mkpath([$data, $idx, $info]); + #-d $dst or die "$0: $dst: $!\n"; + $FOPS->stat("/") or die "$0: $dst: $!\n"; + $FOPS->is_dir("/") or die "$0: $dst: $!\n"; + $FOPS->mkpath($data, $idx, $info); my %index; $index{META} = { @@ -152,15 +156,15 @@ push @{ $index{BLOCKS} }, sprintf "%12d %s %s" => ($. - 1), $cs, $file; - if ( - not( -e "$data/$file" - or -e "$data/$file.gz" - or -e "$data/$file.x" - or -e "$data/$file.gz.x" - or -e "$data/$file.x.gz") + if (not( + $Fops->is_file("$data/$file"), + or $Fops->is_file("$data/$file.gz"), + or $Fops->is_file("$data/$file.x"), + or $Fops->is_file("$data/$file.gz.x"), + or $Fops->is_file("$data/$file.x.gz")) ) { - mkpath dirname("$data/$file"); + $FOPS->mkpath(dirname("$data/$file")); my $out = File::Temp->new( TEMPLATE => "tmp-XXXXXXX", DIR => dirname("$data/$file")