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 /contrib | |
parent | 4c1611249432733818e724fe04a3e9b04848cdab (diff) | |
parent | 775477aa1da94cb9fb9b9afdc217231a0cd42ac1 (diff) | |
download | git-db81e67a7d559544f8464cdfd011208e60b76344.tar.gz git-db81e67a7d559544f8464cdfd011208e60b76344.tar.xz |
Merge branch 'gfi-maint' into gfi-master
* gfi-maint:
Teach import-tars about GNU tar's @LongLink extension.
Diffstat (limited to 'contrib')
-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 d2363a415..a43b2c52f 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; |