From e81614106311688a1932251f23ac42ad04ada4fe Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Wed, 4 Dec 2002 12:40:19 +0000 Subject: do not use "local *F" --- perl-install/partition_table/bsd.pm | 16 +++++++------- perl-install/partition_table/dos.pm | 20 +++++++++--------- perl-install/partition_table/empty.pm | 6 +++--- perl-install/partition_table/gpt.pm | 34 ++++++++++++++---------------- perl-install/partition_table/lvm_PV.pm | 6 +++--- perl-install/partition_table/mac.pm | 38 +++++++++++++++++----------------- perl-install/partition_table/raw.pm | 27 +++++++++++++----------- perl-install/partition_table/sun.pm | 16 +++++++------- 8 files changed, 82 insertions(+), 81 deletions(-) (limited to 'perl-install/partition_table') diff --git a/perl-install/partition_table/bsd.pm b/perl-install/partition_table/bsd.pm index dc85ab3cf..d08cd57aa 100644 --- a/perl-install/partition_table/bsd.pm +++ b/perl-install/partition_table/bsd.pm @@ -62,10 +62,10 @@ sub read($$) { my ($hd, $sector) = @_; my $tmp; - local *F; partition_table::raw::openit($hd, *F) or die "failed to open device"; - c::lseek_sector(fileno(F), $sector, $offset) or die "reading of partition in sector $sector failed"; + my $F = partition_table::raw::openit($hd) or die "failed to open device"; + c::lseek_sector(fileno($F), $sector, $offset) or die "reading of partition in sector $sector failed"; - sysread F, $tmp, psizeof($main_format) or die "error while reading partition table in sector $sector"; + sysread $F, $tmp, psizeof($main_format) or die "error while reading partition table in sector $sector"; my %info; @info{@$main_fields} = unpack $main_format, $tmp; #- TODO verify checksum @@ -90,13 +90,13 @@ sub write($$$;$) { my ($hd, $sector, $pt, $info) = @_; #- handle testing for writing partition table on file only! - local *F; + my $F; if ($::testing) { my $file = "/tmp/partition_table_$hd->{device}"; - open F, ">$file" or die "error opening test file $file"; + open $F, ">$file" or die "error opening test file $file"; } else { - partition_table::raw::openit($hd, *F, 2) or die "error opening device $hd->{device} for writing"; - c::lseek_sector(fileno(F), $sector, $offset) or return 0; + $F = partition_table::raw::openit($hd, 2) or die "error opening device $hd->{device} for writing"; + c::lseek_sector(fileno($F), $sector, $offset) or return 0; } #- TODO compute checksum @@ -109,7 +109,7 @@ sub write($$$;$) { pack $format, @$_{@fields}; } @$pt; - syswrite F, pack($main_format, @$info{@$main_fields}), psizeof($main_format) or return 0; + syswrite $F, pack($main_format, @$info{@$main_fields}), psizeof($main_format) or return 0; 1; } diff --git a/perl-install/partition_table/dos.pm b/perl-install/partition_table/dos.pm index b5f16df87..e448ad841 100644 --- a/perl-install/partition_table/dos.pm +++ b/perl-install/partition_table/dos.pm @@ -58,17 +58,17 @@ sub read { my ($hd, $sector) = @_; my $tmp; - local *F; partition_table::raw::openit($hd, *F) or die "failed to open device"; - c::lseek_sector(fileno(F), $sector, $offset) or die "reading of partition in sector $sector failed"; + my $F = partition_table::raw::openit($hd) or die "failed to open device"; + c::lseek_sector(fileno($F), $sector, $offset) or die "reading of partition in sector $sector failed"; my @pt = map { - sysread F, $tmp, psizeof($format) or die "error while reading partition table in sector $sector"; + sysread $F, $tmp, psizeof($format) or die "error while reading partition table in sector $sector"; my %h; @h{@fields} = unpack $format, $tmp; \%h; } (1..$nb_primary); #- check magic number - sysread F, $tmp, length $magic or die "error reading magic number on disk $hd->{device}"; + sysread $F, $tmp, length $magic or die "error reading magic number on disk $hd->{device}"; $tmp eq $magic or die "bad magic number on disk $hd->{device}"; [ @pt ]; @@ -80,13 +80,13 @@ sub write($$$;$) { my ($hd, $sector, $pt) = @_; #- handle testing for writing partition table on file only! - local *F; + my $F; if ($::testing) { my $file = "/tmp/partition_table_$hd->{device}"; - open F, ">$file" or die "error opening test file $file"; + open $F, ">$file" or die "error opening test file $file"; } else { - partition_table::raw::openit($hd, *F, 2) or die "error opening device $hd->{device} for writing"; - c::lseek_sector(fileno(F), $sector, $offset) or return 0; + $F = partition_table::raw::openit($hd, 2) or die "error opening device $hd->{device} for writing"; + c::lseek_sector(fileno($F), $sector, $offset) or return 0; } @$pt == $nb_primary or die "partition table does not have $nb_primary entries"; @@ -94,9 +94,9 @@ sub write($$$;$) { compute_CHS($hd, $_); local $_->{start} = $_->{local_start} || 0; $_->{active} ||= 0; $_->{type} ||= 0; $_->{size} ||= 0; #- for no warning - syswrite F, pack($format, @$_{@fields}), psizeof($format) or return 0; + syswrite $F, pack($format, @$_{@fields}), psizeof($format) or return 0; } - syswrite F, $magic, length $magic or return 0; + syswrite $F, $magic, length $magic or return 0; 1; } diff --git a/perl-install/partition_table/empty.pm b/perl-install/partition_table/empty.pm index e90991684..596088619 100644 --- a/perl-install/partition_table/empty.pm +++ b/perl-install/partition_table/empty.pm @@ -21,11 +21,11 @@ sub read($$) { my ($hd, $sector) = @_; my $tmp; - local *F; partition_table::raw::openit($hd, *F) or die "failed to open device"; - c::lseek_sector(fileno(F), $sector, 0) or die "reading of partition in sector $sector failed"; + my $F = partition_table::raw::openit($hd) or die "failed to open device"; + c::lseek_sector(fileno($F), $sector, 0) or die "reading of partition in sector $sector failed"; #- check magic number - sysread F, $tmp, 512 or die "error reading magic number on disk $hd->{device}"; + sysread $F, $tmp, 512 or die "error reading magic number on disk $hd->{device}"; $tmp eq substr($tmp, 0, 1) x 512 or die "bad magic number on disk $hd->{device}"; partition_table::raw::zero_MBR($hd); diff --git a/perl-install/partition_table/gpt.pm b/perl-install/partition_table/gpt.pm index ef8ddb187..0f60fce07 100644 --- a/perl-install/partition_table/gpt.pm +++ b/perl-install/partition_table/gpt.pm @@ -65,9 +65,8 @@ my $magic = "EFI PART"; sub generate_guid { my $tmp; - local *F; - open F, devices::make("random") or die "Could not open /dev/random for GUID generation"; - read F, $tmp, psizeof($guid_format); + open(my $F, devices::make("random")) or die "Could not open /dev/random for GUID generation"; + read $F, $tmp, psizeof($guid_format); my %guid; @guid{@$guid_fields} = unpack $guid_format, $tmp; $guid{clock_seq} = ($guid{clock_seq} & 0x3fff) | 0x8000; @@ -148,13 +147,13 @@ sub read { $l[0]{type} == 0xee or die "bad PMBR"; my $myLBA = $l[0]{start}; - local *F; partition_table::raw::openit($hd, *F) or die "failed to open device"; - my $info1 = eval { read_header($myLBA, *F) }; - my $info2 = eval { read_header($info1->{alternateLBA} || $l[0]{start} + $l[0]{size} - 1, *F) }; #- what about using $hd->{totalsectors} ??? + my $F = partition_table::raw::openit($hd) or die "failed to open device"; + my $info1 = eval { read_header($myLBA, $F) }; + my $info2 = eval { read_header($info1->{alternateLBA} || $l[0]{start} + $l[0]{size} - 1, $F) }; #- what about using $hd->{totalsectors} ??? my $info = $info1 || { %$info2, myLBA => $info2->{alternateLBA}, alternateLBA => $info2->{myLBA}, partitionEntriesLBA => $info2->{alternateLBA} + 1 } or die; my $pt = $info1 && $info2 ? - eval { $info1 && read_partitionEntries($info1, *F) } || read_partitionEntries($info2, *F) : - read_partitionEntries($info, *F); + eval { $info1 && read_partitionEntries($info1, $F) } || read_partitionEntries($info2, $F) : + read_partitionEntries($info, $F); $hd->raw_removed($pt); $pt, $info; @@ -190,22 +189,21 @@ sub write { partition_table::dos::write($hd, $sector, $pmbr->{raw}); } - local *F; - partition_table::raw::openit($hd, *F, 2) or die "error opening device $hd->{device} for writing"; + my $F = partition_table::raw::openit($hd, 2) or die "error opening device $hd->{device} for writing"; - c::lseek_sector(fileno(F), $info->{myLBA}, 0) or return 0; + c::lseek_sector(fileno($F), $info->{myLBA}, 0) or return 0; #- pad with 0's - syswrite F, pack($main_format, @$info{@$main_fields}) . "\0" x 512, 512 or return 0; + syswrite $F, pack($main_format, @$info{@$main_fields}) . "\0" x 512, 512 or return 0; - c::lseek_sector(fileno(F), $info->{alternateLBA}, 0) or return 0; + c::lseek_sector(fileno($F), $info->{alternateLBA}, 0) or return 0; #- pad with 0's - syswrite F, pack($main_format, @$info2{@$main_fields}) . "\0" x 512, 512 or return 0; + syswrite $F, pack($main_format, @$info2{@$main_fields}) . "\0" x 512, 512 or return 0; - c::lseek_sector(fileno(F), $info->{partitionEntriesLBA}, 0) or return 0; - syswrite F, $partitionEntries or return 0; + c::lseek_sector(fileno($F), $info->{partitionEntriesLBA}, 0) or return 0; + syswrite $F, $partitionEntries or return 0; - c::lseek_sector(fileno(F), $info2->{partitionEntriesLBA}, 0) or return 0; - syswrite F, $partitionEntries or return 0; + c::lseek_sector(fileno($F), $info2->{partitionEntriesLBA}, 0) or return 0; + syswrite $F, $partitionEntries or return 0; common::sync(); 1; diff --git a/perl-install/partition_table/lvm_PV.pm b/perl-install/partition_table/lvm_PV.pm index dc84e74dc..c2ff30fb6 100644 --- a/perl-install/partition_table/lvm_PV.pm +++ b/perl-install/partition_table/lvm_PV.pm @@ -23,10 +23,10 @@ my $offset = 0; sub read { my ($hd, $sector) = @_; - local *F; partition_table::raw::openit($hd, *F) or die "failed to open device"; - c::lseek_sector(fileno(F), $sector, $offset) or die "reading of partition in sector $sector failed"; + my $F = partition_table::raw::openit($hd) or die "failed to open device"; + c::lseek_sector(fileno($F), $sector, $offset) or die "reading of partition in sector $sector failed"; - sysread F, my $tmp, length $magic or die "error reading magic number on disk $hd->{file}"; + sysread $F, my $tmp, length $magic or die "error reading magic number on disk $hd->{file}"; $tmp eq $magic or die "bad magic number on disk $hd->{file}"; []; diff --git a/perl-install/partition_table/mac.pm b/perl-install/partition_table/mac.pm index d455584cf..4ba83faf2 100644 --- a/perl-install/partition_table/mac.pm +++ b/perl-install/partition_table/mac.pm @@ -100,14 +100,14 @@ sub read($$) { my ($hd, $sector) = @_; my $tmp; - local *F; partition_table::raw::openit($hd, *F) or die "failed to open device"; - c::lseek_sector(fileno(F), $sector, 0) or die "reading of partition in sector $sector failed"; + my $F = partition_table::raw::openit($hd) or die "failed to open device"; + c::lseek_sector(fileno($F), $sector, 0) or die "reading of partition in sector $sector failed"; - sysread F, $tmp, psizeof($bz_format) or die "error while reading bz \(Block Zero\) in sector $sector"; + sysread $F, $tmp, psizeof($bz_format) or die "error while reading bz \(Block Zero\) in sector $sector"; my %info; @info{@$bz_fields} = unpack $bz_format, $tmp; foreach my $i (0 .. $info{bzDrvrCnt}-1) { - sysread F, $tmp, psizeof($dd_format) or die "error while reading driver data in sector $sector"; + sysread $F, $tmp, psizeof($dd_format) or die "error while reading driver data in sector $sector"; my %dd; @dd{@$dd_fields} = unpack $dd_format, $tmp; push @{$info{ddMap}}, \%dd; } @@ -116,21 +116,21 @@ sub read($$) { $info{bzSig} == $magic or die "bad magic number on disk $hd->{device}"; my $numparts; - c::lseek_sector(fileno(F), $sector, 516) or die "reading of partition in sector $sector failed"; - sysread F, $tmp, 4 or die "error while reading partition info in sector $sector"; + c::lseek_sector(fileno($F), $sector, 516) or die "reading of partition in sector $sector failed"; + sysread $F, $tmp, 4 or die "error while reading partition info in sector $sector"; $numparts = unpack "N", $tmp; my $partmapsize; - c::lseek_sector(fileno(F), $sector, 524) or die "reading of partition in sector $sector failed"; - sysread F, $tmp, 4 or die "error while reading partition info in sector $sector"; + c::lseek_sector(fileno($F), $sector, 524) or die "reading of partition in sector $sector failed"; + sysread $F, $tmp, 4 or die "error while reading partition info in sector $sector"; $partmapsize = ((unpack "N", $tmp) * $info{bzBlkSize}) / psizeof($p_format); - c::lseek_sector(fileno(F), $sector, 512) or die "reading of partition in sector $sector failed"; + c::lseek_sector(fileno($F), $sector, 512) or die "reading of partition in sector $sector failed"; my @pt; for (my $i = 0; $i < $partmapsize; $i++) { my $part; - sysread F, $part, psizeof($p_format) or die "error while reading partition info in sector $sector"; + sysread $F, $part, psizeof($p_format) or die "error while reading partition info in sector $sector"; push @pt, map { my %h; @h{@$p_fields} = unpack $p_format, $part; @@ -194,13 +194,13 @@ sub write($$$;$) { my ($hd, $sector, $pt, $info) = @_; #- handle testing for writing partition table on file only! - local *F; + my $F; if ($::testing) { my $file = "/tmp/partition_table_$hd->{device}"; - open F, ">$file" or die "error opening test file $file"; + open $F, ">$file" or die "error opening test file $file"; } else { - partition_table::raw::openit($hd, *F, 2) or die "error opening device $hd->{device} for writing"; - c::lseek_sector(fileno(F), $sector, 0) or return 0; + $F = partition_table::raw::openit($hd, 2) or die "error opening device $hd->{device} for writing"; + c::lseek_sector(fileno($F), $sector, 0) or return 0; } # Find the partition map. @@ -250,17 +250,17 @@ sub write($$$;$) { } # Now let's write our first block. - syswrite F, pack($bz_format, @$info{@$bz_fields}), psizeof($bz_format) or return 0; + syswrite $F, pack($bz_format, @$info{@$bz_fields}), psizeof($bz_format) or return 0; # ...and now the driver information. foreach (@ddstowrite) { - syswrite F, pack($dd_format, @$_{@$dd_fields}), psizeof($dd_format) or return 0; + syswrite $F, pack($dd_format, @$_{@$dd_fields}), psizeof($dd_format) or return 0; } # zero the rest of the data in the first block. foreach (1 .. (494 - ((@ddstowrite) * 8))) { - syswrite F, "\0", 1 or return 0; + syswrite $F, "\0", 1 or return 0; } - #c::lseek_sector(fileno(F), $sector, 512) or return 0; + #c::lseek_sector(fileno($F), $sector, 512) or return 0; # Now, we iterate thru the partstowrite and write them. foreach (@partstowrite) { if (!defined $_->{pSig}) { @@ -329,7 +329,7 @@ sub write($$$;$) { } }; $_->{pMapEntry} = @partstowrite; - syswrite F, pack($p_format, @$_{@$p_fields}), psizeof($p_format) or return 0; + syswrite $F, pack($p_format, @$_{@$p_fields}), psizeof($p_format) or return 0; } common::sync(); diff --git a/perl-install/partition_table/raw.pm b/perl-install/partition_table/raw.pm index 0456c8c26..a10d6d568 100644 --- a/perl-install/partition_table/raw.pm +++ b/perl-install/partition_table/raw.pm @@ -91,14 +91,14 @@ sub get_geometry($) { my ($dev) = @_; my $g = ""; - local *F; sysopen F, $dev, 0 or return; - ioctl(F, c::HDIO_GETGEO(), $g) or return; + sysopen(my $F, $dev, 0) or return; + ioctl($F, c::HDIO_GETGEO(), $g) or return; my %geom; @geom{qw(heads sectors cylinders start)} = unpack "CCSL", $g; $geom{totalcylinders} = $geom{cylinders}; my $total; #- $geom{cylinders} is no good (only a ushort, that means less than 2^16 => at best 512MB) - if ($total = c::total_sectors(fileno F)) { + if ($total = c::total_sectors(fileno $F)) { $geom{cylinders} = int $total / $geom{heads} / $geom{sectors}; } else { $total = $geom{heads} * $geom{sectors} * $geom{cylinders} @@ -107,17 +107,20 @@ sub get_geometry($) { { geom => \%geom, totalsectors => $total }; } -sub openit($$;$) { sysopen $_[1], $_[0]{file}, $_[2] || 0 } +sub openit { + my ($hd, $mode) = @_; + my $F; sysopen($F, $hd->{file}, $mode || 0) and $F; +} # cause kernel to re-read partition table sub kernel_read($) { my ($hd) = @_; common::sync(); - local *F; openit($hd, *F) or return 0; + my $F = openit($hd) or return 0; common::sync(); sleep(1); - $hd->{rebootNeeded} = !ioctl(F, c::BLKRRPART(), 0); + $hd->{rebootNeeded} = !ioctl($F, c::BLKRRPART(), 0); common::sync(); - close F; + close $F; common::sync(); sleep(1); } @@ -172,19 +175,19 @@ sub test_for_bad_drives { sub error { die "$_[0] error: $_[1]" } - local *F; openit($hd, *F, 2) or error(openit($hd, *F, 0) ? 'write' : 'read', "can't open device"); + my $F = openit($hd, 2) or error(openit($hd) ? 'write' : 'read', "can't open device"); my $seek = sub { - c::lseek_sector(fileno(F), $sector, 0) or error('read', "seeking to sector $sector failed"); + c::lseek_sector(fileno($F), $sector, 0) or error('read', "seeking to sector $sector failed"); }; my $tmp; - &$seek; sysread F, $tmp, $SECTORSIZE or error('read', "can't even read ($!)"); + &$seek; sysread $F, $tmp, $SECTORSIZE or error('read', "can't even read ($!)"); return if $hd->{readonly} || $::testing; - &$seek; syswrite F, $tmp or error('write', "can't even write ($!)"); + &$seek; syswrite $F, $tmp or error('write', "can't even write ($!)"); my $tmp2; - &$seek; sysread F, $tmp2, $SECTORSIZE or die "test_for_bad_drives: can't even read again ($!)"; + &$seek; sysread $F, $tmp2, $SECTORSIZE or die "test_for_bad_drives: can't even read again ($!)"; $tmp eq $tmp2 or die N("Something bad is happening on your drive. A test to check the integrity of data has failed. diff --git a/perl-install/partition_table/sun.pm b/perl-install/partition_table/sun.pm index 2302b905b..bcae6d296 100644 --- a/perl-install/partition_table/sun.pm +++ b/perl-install/partition_table/sun.pm @@ -75,10 +75,10 @@ sub read($$) { my ($hd, $sector) = @_; my $tmp; - local *F; partition_table::raw::openit($hd, *F) or die "failed to open device"; - c::lseek_sector(fileno(F), $sector, $offset) or die "reading of partition in sector $sector failed"; + my $F = partition_table::raw::openit($hd) or die "failed to open device"; + c::lseek_sector(fileno($F), $sector, $offset) or die "reading of partition in sector $sector failed"; - sysread F, $tmp, psizeof($main_format) or die "error while reading partition table in sector $sector"; + sysread $F, $tmp, psizeof($main_format) or die "error while reading partition table in sector $sector"; my %info; @info{@$main_fields} = unpack $main_format, $tmp; #- check magic number @@ -120,13 +120,13 @@ sub write($$$;$) { # my ($csize, $wdsize) = (0, 0); #- handle testing for writing partition table on file only! - local *F; + my $F; if ($::testing) { my $file = "/tmp/partition_table_$hd->{device}"; - open F, ">$file" or die "error opening test file $file"; + open $F, ">$file" or die "error opening test file $file"; } else { - partition_table::raw::openit($hd, *F, 2) or die "error opening device $hd->{device} for writing"; - c::lseek_sector(fileno(F), $sector, $offset) or return 0; + $F = partition_table::raw::openit($hd, 2) or die "error opening device $hd->{device} for writing"; + c::lseek_sector(fileno($F), $sector, $offset) or return 0; } ($info->{infos}, $info->{partitions}) = map { join '', @$_ } list2kv map { @@ -145,7 +145,7 @@ sub write($$$;$) { $info->{csum} = 0; $info->{csum} = compute_crc(pack($main_format, @$info{@$main_fields})); - syswrite F, pack($main_format, @$info{@$main_fields}), psizeof($main_format) or return 0; + syswrite $F, pack($main_format, @$info{@$main_fields}), psizeof($main_format) or return 0; common::sync(); -- cgit v1.2.1