summaryrefslogtreecommitdiffstats
path: root/perl-install
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>1999-09-01 10:21:01 +0000
committerPascal Rigaux <pixel@mandriva.com>1999-09-01 10:21:01 +0000
commit2fe429a1283bb382c14b3657ab9f752a8b240233 (patch)
treee8e00ae4bf9ea2e1f4cd00b90df0b63c00af4fde /perl-install
parent63746e561f4804236803986cc19de6664d95dc1c (diff)
downloaddrakx-2fe429a1283bb382c14b3657ab9f752a8b240233.tar
drakx-2fe429a1283bb382c14b3657ab9f752a8b240233.tar.gz
drakx-2fe429a1283bb382c14b3657ab9f752a8b240233.tar.bz2
drakx-2fe429a1283bb382c14b3657ab9f752a8b240233.tar.xz
drakx-2fe429a1283bb382c14b3657ab9f752a8b240233.zip
no_comment
Diffstat (limited to 'perl-install')
-rw-r--r--perl-install/common.pm4
-rw-r--r--perl-install/fsedit.pm8
-rw-r--r--perl-install/install2.pm11
3 files changed, 14 insertions, 9 deletions
diff --git a/perl-install/common.pm b/perl-install/common.pm
index 4220b06d7..fbaf4cd80 100644
--- a/perl-install/common.pm
+++ b/perl-install/common.pm
@@ -131,9 +131,9 @@ sub before_leaving(&) {
sub catch_cdie(&&) {
my ($f, $catch) = @_;
+ local @common::cdie_catches;
unshift @common::cdie_catches, $catch;
&$f();
- shift @common::cdie_catches;
}
sub cdie {
@@ -141,7 +141,7 @@ sub cdie {
foreach (@common::cdie_catches) {
&{$_}(@_) and return;
}
- die @_;
+ die join '', @_;
}
sub all {
diff --git a/perl-install/fsedit.pm b/perl-install/fsedit.pm
index 6d07796d6..fc555c056 100644
--- a/perl-install/fsedit.pm
+++ b/perl-install/fsedit.pm
@@ -3,7 +3,7 @@ package fsedit;
use diagnostics;
use strict;
-use common qw(:common :constant);
+use common qw(:common :constant :functional);
use partition_table qw(:types);
use partition_table_raw;
use Data::Dumper;
@@ -50,10 +50,8 @@ sub hds($$) {
eval { partition_table::read($hd, $flags->{clearall}) };
if ($@) {
-# $@ =~ /bad magic number/ or die;
- $flags->{eraseBadPartitions} ?
- partition_table_raw::zero_MBR($hd) :
- die;
+ &cdie($@) unless $flags->{eraseBadPartitions};
+ partition_table_raw::zero_MBR($hd);
}
push @hds, $hd;
}
diff --git a/perl-install/install2.pm b/perl-install/install2.pm
index 9f64b17ee..bafaa515d 100644
--- a/perl-install/install2.pm
+++ b/perl-install/install2.pm
@@ -4,7 +4,7 @@ use diagnostics;
use strict;
use vars qw($o);
-use common qw(:common :file :system);
+use common qw(:common :file :system :functional);
use install_any qw(:all);
use log;
use network;
@@ -282,7 +282,14 @@ sub setupSCSI {
sub partitionDisks {
$o->{drives} = [ detect_devices::hds() ];
- $o->{hds} = fsedit::hds($o->{drives}, $o->{default}{partitioning});
+ $o->{hds} = catch_cdie { fsedit::hds($o->{drives}, $o->{default}{partitioning}) }
+ sub {
+ $o->ask_warn(_("Error"),
+_("I can't read your partition table, it's too corrupted for me :(
+I'll try to go on blanking bad partitions"));
+ 1;
+ };
+
unless (@{$o->{hds}} > 0) {
$o->setupSCSI if $o->{autoSCSI}; # ask for an unautodetected scsi card
}