[build] Reinstate the .pdsk padded-floppy image format
authorMichael Brown <mcb30@etherboot.org>
Thu, 16 Apr 2009 04:59:44 +0000 (05:59 +0100)
committerMichael Brown <mcb30@etherboot.org>
Thu, 16 Apr 2009 05:01:07 +0000 (06:01 +0100)
Some utilities that expect a floppy disk image (e.g. iLO?) may test
for a file of the correct size.  Reinstate the .pdsk image format in
order to provide this if needed.

src/arch/i386/Makefile.pcbios
src/util/padimg.pl

index 7aa0afd..b185418 100644 (file)
@@ -59,3 +59,9 @@ NON_AUTO_MEDIA        += usb
 %usb: $(BIN)/usbdisk.bin %hd
        $(QM)$(ECHO) "  [FINISH] $@"
        $(Q)cat $^ > $@
+
+# Padded floppy image (e.g. for iLO)
+NON_AUTO_MEDIA += pdsk
+%pdsk : %dsk
+       $(Q)cp $< $@
+       $(Q)$(PADIMG) --blksize=1474560 $@
index f3dcbbc..71d0eee 100755 (executable)
@@ -23,8 +23,8 @@ GetOptions ( { map { /^(\w+)/; $1 => $opts->{$_} } keys %$opts }, keys %$opts )
 while ( my $filename = shift ) {
   die "$filename is not a file\n" unless -f $filename;
   my $oldsize = -s $filename;
-  my $newsize = ( ( $oldsize + $blksize - 1 ) & ~( $blksize - 1 ) );
-  my $padsize = ( $newsize - $oldsize );
+  my $padsize = ( ( -$oldsize ) % $blksize );
+  my $newsize = ( $oldsize + $padsize );
   next unless $padsize;
   if ( $verbosity >= 1 ) {
       printf "Padding %s from %d to %d bytes with %d x 0x%02x\n",
@@ -40,5 +40,6 @@ while ( my $filename = shift ) {
     truncate $filename, $newsize
        or die "Could not resize $filename: $!\n";
   }
-  die "Failed to pad $filename\n" unless -s $filename == $newsize;
+  die "Failed to pad $filename\n"
+      unless ( ( ( -s $filename ) % $blksize ) == 0 );
 }