#!/usr/opkg/bin/perl
##
##  rpmoffset -- determine offset of payload in an RPM file
##

use IO;

my $f = new IO::File "<$ARGV[0]";

$f->read($rpm, 96);
($magic, $major, $minor, $crap) = unpack("NCC C90", $rpm);
die "Not an RPM\n" if $magic != 0xedabeedb;
die "Not a version 3 or 4 RPM\n" if $major != 3 && $major != 4;

while (!$f->eof) {
    $pos = $f->tell();
    $f->read($rpm, 16);
    $smagic = unpack("n", $rpm);
    last if $smagic eq 0x1f8b;
    if ($pos & 0x7) {
        $pos += 7;
        $pos &= ~0x7;
        $f->seek($pos, 0);
        $f->read($rpm, 16);
    }
    ($magic, $crap, $sections, $bytes) = unpack("N4", $rpm);
    die "Error: header not recognized\n" if $magic != 0x8eade801;
    $pos += 16;
    $pos += 16 * $sections;
    $pos += $bytes;
    $f->seek($pos, 0);
}

print STDERR $pos . "\n";

