summaryrefslogtreecommitdiffstats
path: root/perl-install/partition_table/mac.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/partition_table/mac.pm')
-rw-r--r--perl-install/partition_table/mac.pm31
1 files changed, 17 insertions, 14 deletions
diff --git a/perl-install/partition_table/mac.pm b/perl-install/partition_table/mac.pm
index 4b60710bb..78e5469cd 100644
--- a/perl-install/partition_table/mac.pm
+++ b/perl-install/partition_table/mac.pm
@@ -1,8 +1,8 @@
-package partition_table::mac; # $Id$
+package partition_table::mac;
use diagnostics;
#use strict; - fixed other PPC code to comply, but program bails on empty partition table - sbenedict
-use vars qw(@ISA $freepart $bootstrap_part $macos_part);
+use vars qw(@ISA $freepart $bootstrap_part $macos_part $new_bootstrap);
@ISA = qw(partition_table::raw);
@@ -79,6 +79,8 @@ $p_format = join '', @$p_format;
my $magic = 0x4552;
my $pmagic = 0x504D;
+sub use_pt_type { 1 }
+
sub first_usable_sector { 1 }
sub adjustStart($$) {
@@ -96,7 +98,7 @@ sub adjustEnd($$) {
my ($_hd, $_part) = @_;
}
-sub read($$) {
+sub read_one {
my ($hd, $sector) = @_;
my $tmp;
@@ -175,7 +177,7 @@ sub read($$) {
} else {
$h{pt_type} = 0x401;
$h{isDriver} = 1;
- };
+ }
# Let's see if this partition is a driver.
foreach (@{$info{ddMap}}) {
@@ -185,13 +187,13 @@ sub read($$) {
}
\%h;
} [ $part ];
- };
+ }
[ @pt ], \%info;
}
sub write($$$;$) {
- my ($hd, $sector, $pt, $info) = @_;
+ my ($hd, $_handle, $sector, $pt, $info) = @_;
#- handle testing for writing partition table on file only!
my $F;
@@ -225,7 +227,7 @@ sub write($$$;$) {
};
}
push @partstowrite, $part;
- };
+ }
# now, fill a gap at the end if there is one.
if ($last->{start} + $last->{size} < $hd->{totalsectors}) {
@@ -236,7 +238,7 @@ sub write($$$;$) {
};
}
- # Since we didn't create any new drivers, let's try and match up our driver records with out partitons and see if any are missing.
+ # Since we did not create any new drivers, let's try and match up our driver records with out partitons and see if any are missing.
$info->{bzDrvrCnt} = 0;
my @ddstowrite;
foreach my $dd (@{$info->{ddMap}}) {
@@ -296,7 +298,7 @@ sub write($$$;$) {
$_->{pFlags} = 0x33;
$_->{isBoot} = 1;
log::l("writing a bootstrap at /dev/$_->{device}");
- $install_steps_interactive::new_bootstrap = 1 if !(defined $partition_table::mac::bootstrap_part);
+ $new_bootstrap = 1 if !(defined $bootstrap_part);
$bootstrap_part = "/dev/" . $_->{device};
} elsif (isSwap($_)) {
$_->{pType} = "Apple_UNIX_SVR2";
@@ -327,7 +329,7 @@ sub write($$$;$) {
$_->{pName} = "Extra";
$_->{pFlags} = 0x31;
}
- };
+ }
$_->{pMapEntry} = @partstowrite;
syswrite $F, pack($p_format, @$_{@$p_fields}), psizeof($p_format) or return 0;
}
@@ -355,8 +357,8 @@ sub info {
$info;
}
-sub clear_raw {
- my ($hd) = @_;
+sub initialize {
+ my ($class, $hd) = @_;
my @oldraw = @{$hd->{primary}{raw}};
my $pt = { raw => [ ({}) x 63 ], info => info($hd) };
@@ -384,10 +386,11 @@ sub clear_raw {
push @{$pt->{normal}}, $pt->{raw}[$i];
$i++;
}
- };
+ }
@{$pt->{info}{ddMap}} = @{$hd->{primary}{info}{ddMap}};
- $pt;
+ $hd->{primary} = $pt;
+ bless $hd, $class;
}
1;