Codebase list magicrescue / upstream/1.1.4 tools / gzip_rename.pl
upstream/1.1.4

Tree @upstream/1.1.4 (Download .tar.gz)

gzip_rename.pl @upstream/1.1.4raw · history · blame

#!/usr/bin/env perl
use strict;

use constant FCONT  => 1<<1;
use constant FEXTRA => 1<<2;
use constant FNAME  => 1<<3;

my $file = $ARGV[0];
unless (@ARGV and -f $file) {
    die "Usage: gzip_rename.pl FILENAME < orig-data\n";
}

my $buf;

read STDIN, $buf, 10 or exit;
my $flags = (unpack "C4", $buf)[3];
exit unless defined $flags;
exit unless $flags & FNAME;

if ($flags & FCONT) {
    read STDIN, $buf, 2 or exit;
}
    
if ($flags & FEXTRA) {
    read STDIN, $buf, 2 or exit;
    my $len = unpack("v", $buf); # unsigned little-endian 16-bit
    exit if $len > 10240;
    read STDIN, $buf, $len or exit;
}

read STDIN, $buf, 130 or exit;
my $origname = unpack("Z130", $buf);
if ($origname and length($origname) < 128 and $origname !~ m[[/\x00-\x1F]]) {
    print "RENAME $origname\n";
}