You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

fixrom.pl 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/usr/bin/perl -w
  2. #
  3. # Copyright (C) 2010 Michael Brown <mbrown@fensystems.co.uk>.
  4. #
  5. # This program is free software; you can redistribute it and/or
  6. # modify it under the terms of the GNU General Public License as
  7. # published by the Free Software Foundation; either version 2 of the
  8. # License, or any later version.
  9. #
  10. # This program is distributed in the hope that it will be useful, but
  11. # WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  13. # General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with this program; if not, write to the Free Software
  17. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  18. # 02110-1301, USA.
  19. use strict;
  20. use warnings;
  21. use FindBin;
  22. use lib "$FindBin::Bin";
  23. use Option::ROM qw ( :all );
  24. my @romfiles = @ARGV;
  25. foreach my $romfile ( @romfiles ) {
  26. my $rom = new Option::ROM;
  27. $rom->load ( $romfile );
  28. my $image = $rom;
  29. while ( $image ) {
  30. $image->pnp_header->fix_checksum() if $image->pnp_header;
  31. $image->undi_header->fix_checksum() if $image->undi_header;
  32. $image->ipxe_header->fix_checksum() if $image->ipxe_header;
  33. $image->fix_checksum();
  34. $image = $image->next_image();
  35. }
  36. $rom->save ( $romfile );
  37. }