diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2007-05-02 13:24:10 -0400 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2007-05-02 13:24:10 -0400 |
commit | db81e67a7d559544f8464cdfd011208e60b76344 (patch) | |
tree | 9f511741fec07e4fb4411fa707b9b1b76929678a | |
parent | GIT v1.5.2-rc1 (diff) | |
parent | Teach import-tars about GNU tar's @LongLink extension. (diff) | |
download | tgif-db81e67a7d559544f8464cdfd011208e60b76344.tar.xz |
Merge branch 'gfi-maint' into gfi-master
* gfi-maint:
Teach import-tars about GNU tar's @LongLink extension.
-rwxr-xr-x | contrib/fast-import/import-tars.perl | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/contrib/fast-import/import-tars.perl b/contrib/fast-import/import-tars.perl index d2363a415d..a43b2c52f0 100755 --- a/contrib/fast-import/import-tars.perl +++ b/contrib/fast-import/import-tars.perl @@ -52,6 +52,25 @@ foreach my $tar_file (@ARGV) Z8 Z1 Z100 Z6 Z2 Z32 Z32 Z8 Z8 Z*', $_; 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}; $mode = oct $mode; $size = oct $size; |