diff options
author | Junio C Hamano <junkio@cox.net> | 2007-05-02 11:00:16 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-05-02 11:00:16 -0700 |
commit | 7a33b0bfced9cfcea785dac5ddf189d937a42446 (patch) | |
tree | 69f3bee1d6a0a13cf4bc0d46e8076fa46c0654df | |
parent | cvsserver: Handle re-added files correctly (diff) | |
parent | Teach import-tars about GNU tar's @LongLink extension. (diff) | |
download | tgif-7a33b0bfced9cfcea785dac5ddf189d937a42446.tar.xz |
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.
-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 82a90429c8..e46492048c 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; |