diff options
-rw-r--r-- | perl-install/partition_table.pm | 9 | ||||
-rw-r--r-- | perl-install/partition_table/raw.pm | 14 |
2 files changed, 15 insertions, 8 deletions
diff --git a/perl-install/partition_table.pm b/perl-install/partition_table.pm index 7f309d329..08d9d5814 100644 --- a/perl-install/partition_table.pm +++ b/perl-install/partition_table.pm @@ -255,14 +255,7 @@ sub read_one($$) { ($pt, $info) = $hd->read_one($sector); } - my @extended = $hd->hasExtended ? grep { isExtended($_) } @$pt : (); - my @normal = grep { $_->{size} && !isEmpty($_) && !isExtended($_) } @$pt; - my $nb_special_empty = int(grep { $_->{size} && isEmpty($_) } @$pt); - - @extended > 1 and die "more than one extended partition"; - - put_in_hash($_, hd2minimal_part($hd)) foreach @normal, @extended; - { raw => $pt, extended => $extended[0], normal => \@normal, info => $info, nb_special_empty => $nb_special_empty }; + partition_table::raw::pt_info_to_primary($hd, $pt, $info); } sub read { diff --git a/perl-install/partition_table/raw.pm b/perl-install/partition_table/raw.pm index d1549239d..e2fd7e949 100644 --- a/perl-install/partition_table/raw.pm +++ b/perl-install/partition_table/raw.pm @@ -6,6 +6,7 @@ use strict; use common; use devices; use detect_devices; +use fs::type; use log; use c; @@ -235,6 +236,19 @@ sub zero_MBR_and_dirty { zero_MBR($hd); } +sub pt_info_to_primary { + my ($hd, $pt, $info) = @_; + + my @extended = $hd->hasExtended ? grep { isExtended($_) } @$pt : (); + my @normal = grep { $_->{size} && !isEmpty($_) && !isExtended($_) } @$pt; + my $nb_special_empty = int(grep { $_->{size} && isEmpty($_) } @$pt); + + @extended > 1 and die "more than one extended partition"; + + put_in_hash($_, partition_table::hd2minimal_part($hd)) foreach @normal, @extended; + { raw => $pt, extended => $extended[0], normal => \@normal, info => $info, nb_special_empty => $nb_special_empty }; +} + #- ugly stuff needed mainly for Western Digital IDE drives #- try writing what we've just read, yells if it fails #- testing on last sector of head #0 (unused in 99% cases) |