| #!/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 ( "-" ); |
| } |