From: Shawn O. Pearce Date: Wed, 2 May 2007 17:24:10 +0000 (-0400) Subject: Merge branch 'gfi-maint' into gfi-master X-Git-Tag: v1.5.2-rc2~11 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/db81e67a7d559544f8464cdfd011208e60b76344?ds=inline;hp=-c Merge branch 'gfi-maint' into gfi-master * gfi-maint: Teach import-tars about GNU tar's @LongLink extension. --- db81e67a7d559544f8464cdfd011208e60b76344 diff --combined contrib/fast-import/import-tars.perl index d2363a415d,e46492048c..a43b2c52f0 --- a/contrib/fast-import/import-tars.perl +++ b/contrib/fast-import/import-tars.perl @@@ -52,6 -52,25 +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; @@@ -65,12 -84,7 +84,12 @@@ } print FI "\n"; - my $path = "$prefix$name"; + my $path; + if ($prefix) { + $path = "$prefix/$name"; + } else { + $path = "$name"; + } $files{$path} = [$next_mark++, $mode]; $commit_time = $mtime if $mtime > $commit_time;