equal
deleted
inserted
replaced
119 encryption => $o{pass} ? CIPHER : "none", |
119 encryption => $o{pass} ? CIPHER : "none", |
120 }; |
120 }; |
121 |
121 |
122 open(my $in => $src); |
122 open(my $in => $src); |
123 binmode($in); |
123 binmode($in); |
124 local $/ = \$o{blocksize}; |
|
125 local $| = 1; |
124 local $| = 1; |
126 |
125 |
127 my %stats = ( |
126 my %stats = ( |
128 written => 0, |
127 written => 0, |
129 skipped => 0, |
128 skipped => 0, |
143 length($stats{todo}) => $stats{skipped}; |
142 length($stats{todo}) => $stats{skipped}; |
144 alarm(5); |
143 alarm(5); |
145 }; |
144 }; |
146 $SIG{ALRM}->(); |
145 $SIG{ALRM}->(); |
147 |
146 |
148 while (my $buffer = <$in>) { |
147 for (my $blknr = 0; sysread($in => my $buffer, $o{blocksize}) > 0; ++$blknr) { |
|
148 |
149 my ($file, $ext, $cs); |
149 my ($file, $ext, $cs); |
150 $file = $cs = md5_hex($buffer); |
150 $file = $cs = md5_hex($buffer); |
151 $file =~ s/(?<fn>(?<prefix>...).*)/$+{prefix}\/$+{fn}/g; |
151 $file =~ s/(?<fn>(?<prefix>...).*)/$+{prefix}\/$+{fn}/g; |
152 $ext .= $o{pass} ? ".x" : ""; |
152 $ext .= $o{pass} ? ".x" : ""; |
153 |
153 |
154 # the extension we do not put into the index |
154 # the extension we do not put into the index |
155 push @{ $index{BLOCKS} }, sprintf "%12d %s %s" => ($. - 1), |
155 push @{ $index{BLOCKS} }, sprintf "%12d %s %s" => $blknr, |
156 $cs, $file; |
156 $cs, $file; |
157 |
157 |
158 if (not Imager::get_file("$data/$file")) { |
158 if (not Imager::get_file("$data/$file")) { |
159 mkpath dirname("$data/$file"); |
159 mkpath dirname("$data/$file"); |
160 my $out = File::Temp->new( |
160 my $out = File::Temp->new( |
182 } |
182 } |
183 |
183 |
184 syswrite $out => $buffer; |
184 syswrite $out => $buffer; |
185 close($out); |
185 close($out); |
186 rename($out => "$data/$file$ext"); |
186 rename($out => "$data/$file$ext"); |
187 $index{BLOCKS}[$. - 1] .= " *"; |
187 $index{BLOCKS}[$blknr] .= " *"; |
188 $stats{written}++; |
188 $stats{written}++; |
189 } |
189 } |
190 else { |
190 else { |
191 $stats{skipped}++; |
191 $stats{skipped}++; |
192 } |
192 } |