Merge branch 'maint' of git://repo.or.cz/git/fastimport into maint
* 'maint' of git://repo.or.cz/git/fastimport: Teach import-tars about GNU tar's @LongLink extension.
This commit is contained in:
@ -52,6 +52,25 @@ foreach my $tar_file (@ARGV)
|
|||||||
Z8 Z1 Z100 Z6
|
Z8 Z1 Z100 Z6
|
||||||
Z2 Z32 Z32 Z8 Z8 Z*', $_;
|
Z2 Z32 Z32 Z8 Z8 Z*', $_;
|
||||||
last unless $name;
|
last unless $name;
|
||||||
|
if ($name eq '././@LongLink') {
|
||||||
|
# GNU tar extension
|
||||||
|
if (read(I, $_, 512) != 512) {
|
||||||
|
die ('Short archive');
|
||||||
|
}
|
||||||
|
$name = unpack 'Z257', $_;
|
||||||
|
next unless $name;
|
||||||
|
|
||||||
|
my $dummy;
|
||||||
|
if (read(I, $_, 512) != 512) {
|
||||||
|
die ('Short archive');
|
||||||
|
}
|
||||||
|
($dummy, $mode, $uid, $gid, $size, $mtime,
|
||||||
|
$chksum, $typeflag, $linkname, $magic,
|
||||||
|
$version, $uname, $gname, $devmajor, $devminor,
|
||||||
|
$prefix) = unpack 'Z100 Z8 Z8 Z8 Z12 Z12
|
||||||
|
Z8 Z1 Z100 Z6
|
||||||
|
Z2 Z32 Z32 Z8 Z8 Z*', $_;
|
||||||
|
}
|
||||||
next if $name =~ m{/\z};
|
next if $name =~ m{/\z};
|
||||||
$mode = oct $mode;
|
$mode = oct $mode;
|
||||||
$size = oct $size;
|
$size = oct $size;
|
||||||
|
Reference in New Issue
Block a user