#
#========================================================================
#
-# Version 2.1.0beta0, released 20 Mar 2004.
+# Version 2.1.0, released 20 Jun 2004.
#
# See http://backuppc.sourceforge.net.
#
my $fh = @_;
foreach my $hdr ( @HardLinks ) {
$hdr->{size} = 0;
+ my $name = $hdr->{linkname};
+ $name =~ s{^\./}{/};
+ if ( defined($HardLinkExtraFiles{$name}) ) {
+ $hdr->{linkname} = $HardLinkExtraFiles{$name};
+ }
if ( defined($PathRemove)
&& substr($hdr->{linkname}, 0, length($PathRemove)+1)
eq ".$PathRemove" ) {
TarWriteFileInfo($fh, $hdr);
my($data, $size);
while ( $f->read(\$data, $BufSize) > 0 ) {
+ if ( $size + length($data) > $hdr->{size} ) {
+ print(STDERR "Error: truncating $hdr->{fullPath} to"
+ . " $hdr->{size} bytes\n");
+ $data = substr($data, 0, $hdr->{size} - $size);
+ $ErrorCnt++;
+ }
TarWrite($fh, \$data);
$size += length($data);
}
$f->close;
+ if ( $size != $hdr->{size} ) {
+ print(STDERR "Error: padding $hdr->{fullPath} to $hdr->{size}"
+ . " bytes from $size bytes\n");
+ $ErrorCnt++;
+ while ( $size < $hdr->{size} ) {
+ my $len = $hdr->{size} - $size;
+ $len = $BufSize if ( $len > $BufSize );
+ $data = "\0" x $len;
+ TarWrite($fh, \$data);
+ $size += $len;
+ }
+ }
TarWritePad($fh, $size);
$FileCnt++;
$ByteCnt += $size;
my $done = 0;
my $name = $hdr->{linkname};
$name =~ s{^\./}{/};
- if ( $HardLinkExtraFiles{$name} ) {
+ if ( defined($HardLinkExtraFiles{$name}) ) {
$done = 1;
} else {
foreach my $arg ( @ARGV ) {
# routine, so that we save the hassle of dealing with
# mangling, merging and attributes.
#
- $HardLinkExtraFiles{$hdr->{linkname}} = 1;
+ my $name = $hdr->{linkname};
+ $name =~ s{^\./}{/};
+ $HardLinkExtraFiles{$name} = $hdr->{name};
archiveWrite($fh, $hdr->{linkname}, $hdr->{name});
}
} elsif ( $hdr->{type} == BPC_FTYPE_SYMLINK ) {