Annotation of qemu/roms/ipxe/src/util/padimg.pl, revision 1.1.1.1

1.1       root        1: #!/usr/bin/perl -w
                      2: 
                      3: use strict;
                      4: use warnings;
                      5: use Getopt::Long;
                      6: use Fcntl;
                      7: 
                      8: my $verbosity = 0;
                      9: my $blksize = 512;
                     10: my $byte = 0;
                     11: 
                     12: my %opts = (
                     13:   'verbose|v+' => sub { $verbosity++; },
                     14:   'quiet|q+' => sub { $verbosity--; },
                     15:   'blksize|s=o' => sub { $blksize = $_[1]; },
                     16:   'byte|b=o' => sub { $byte = $_[1]; },
                     17: );
                     18: 
                     19: Getopt::Long::Configure ( 'bundling', 'auto_abbrev' );
                     20: GetOptions ( %opts ) or die "Could not parse command-line options\n";
                     21: 
                     22: while ( my $filename = shift ) {
                     23:   die "$filename is not a file\n" unless -f $filename;
                     24:   my $oldsize = -s $filename;
                     25:   my $padsize = ( ( -$oldsize ) % $blksize );
                     26:   my $newsize = ( $oldsize + $padsize );
                     27:   next unless $padsize;
                     28:   if ( $verbosity >= 1 ) {
                     29:       printf "Padding %s from %d to %d bytes with %d x 0x%02x\n",
                     30:             $filename, $oldsize, $newsize, $padsize, $byte;
                     31:   }
                     32:   if ( $byte ) {
                     33:     sysopen ( my $fh, $filename, ( O_WRONLY | O_APPEND ) )
                     34:        or die "Could not open $filename for appending: $!\n";
                     35:     syswrite $fh, ( chr ( $byte ) x $padsize )
                     36:        or die "Could not append to $filename: $!\n";
                     37:     close ( $fh );
                     38:   } else {
                     39:     truncate $filename, $newsize
                     40:        or die "Could not resize $filename: $!\n";
                     41:   }
                     42:   die "Failed to pad $filename\n"
                     43:       unless ( ( ( -s $filename ) % $blksize ) == 0 );
                     44: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.