From ddabe1804b4034c1e7ecc623ad33b8d5e9a8c4f6 Mon Sep 17 00:00:00 2001 From: paravoid Date: Tue, 2 Oct 2007 20:23:30 +0000 Subject: [PATCH] fix 'file not found' errors on some gzips --- pristine-gz | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/pristine-gz b/pristine-gz index a6b2908..85b658f 100755 --- a/pristine-gz +++ b/pristine-gz @@ -238,23 +238,30 @@ sub reproducegz { # information my @args = predictgzipargs($flags, $timestamp, $level); - $name = "$wd/$name" if $name && $name !~ /\//; - - if ($os == GZIP_OS_UNIX && $name !~ /\//) { - # for 98% of the cases the simple heuristic above works - testvariant($orig, $new, $name, '--gnu', @args) - && return $name, $timestamp, '--gnu', @args; - - # some .gz are created using --rsyncable - # it is a Debian-specific option not very popular - testvariant($orig, $new, $name, '--gnu', @args, '--rsyncable') - && return $name, $timestamp, '--gnu', @args, '--rsyncable'; + if ($name !~ /\//) { + if ($name) { + $name = "$wd/$name"; + move($new, "$name.gz"); + doit("mv", "-f", $new, "$name.gz"); + $new = "$name.gz"; + } + if ($os == GZIP_OS_UNIX) { + # for 98% of the cases the simple heuristic above works + testvariant($orig, $new, $name, '--gnu', @args) + && return $name, $timestamp, '--gnu', @args; + + # some .gz are created using --rsyncable + # it is a Debian-specific option not very popular + testvariant($orig, $new, $name, '--gnu', @args, '--rsyncable') + && return $name, $timestamp, '--gnu', @args, '--rsyncable'; + } } - - if ($name =~ /\//) { + else { push @args, "--original-name", $name; $name = basename($name); $name = "$wd/$name"; + doit("mv", "-f", $new, "$name.gz"); + $new = "$name.gz"; } # Windows' NTFS gzip implementation; quirk is really really evil -- 2.7.4