summaryrefslogtreecommitdiffstats
path: root/src/util/catrom.pl
blob: da99d7b9708cebca8c600f61fea7b2379b15c6c7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/perl -w

use warnings;
use strict;

use FindBin;
use lib "$FindBin::Bin";
use Option::ROM qw ( :all );

my @romfiles = @ARGV
    or die "Usage: $0 rom-file-1 rom-file-2 ... > multi-rom-file\n";

while ( my $romfile = shift @romfiles ) {

  # Read ROM file
  my $rom = new Option::ROM;
  $rom->load ( $romfile );

  # Tag final image as non-final in all except the final ROM
  if ( @romfiles ) {
    my $image = $rom;
    $image = $image->next_image() while $image->next_image();
    $image->pci_header->{last_image} &= ~PCI_LAST_IMAGE;
    $image->fix_checksum();
  }

  # Write ROM file to STDOUT
  $rom->save ( "-" );
}