summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/any.pm116
-rw-r--r--perl-install/modules/interactive.pm117
-rw-r--r--perl-install/network/ethernet.pm6
3 files changed, 120 insertions, 119 deletions
diff --git a/perl-install/any.pm b/perl-install/any.pm
index 1e62915a2..c50bc4bb6 100644
--- a/perl-install/any.pm
+++ b/perl-install/any.pm
@@ -426,122 +426,6 @@ sub inspect {
$h;
}
-sub load_category {
- my ($in, $category, $auto, $at_least_one) = @_;
-
- my @l;
- {
- my $w;
- my $wait_message = sub { $w = wait_load_module($in, $category, @_) };
- @l = modules::load_category($category, $wait_message);
- @l = modules::load_category($category, $wait_message, 'force') if !@l && $at_least_one;
- }
- if (my @err = grep { $_ } map { $_->{error} } @l) {
- $in->ask_warn('', join("\n", @err));
- }
- return @l if $auto && (@l || !$at_least_one);
-
- @l = map { $_->{description} } @l;
-
- if ($at_least_one && !@l) {
- @l = load_category__prompt($in, $category) or return;
- }
-
- load_category__prompt_for_more($in, $category, @l);
-}
-
-sub load_category__prompt_for_more {
- my ($in, $category, @l) = @_;
-
- (my $msg_type = $category) =~ s/\|.*//;
-
- while (1) {
- my $msg = @l ?
- [ N("Found %s %s interfaces", join(", ", @l), $msg_type),
- N("Do you have another one?") ] :
- N("Do you have any %s interfaces?", $msg_type);
-
- my $opt = [ N_("Yes"), N_("No") ];
- push @$opt, N_("See hardware info") if $::expert;
- my $r = $in->ask_from_list_('', $msg, $opt, "No") or return;
- if ($r eq "No") { return @l }
- if ($r eq "Yes") {
- push @l, load_category__prompt($in, $category) || next;
- } else {
- $in->ask_warn('', [ detect_devices::stringlist() ]);
- }
- }
-}
-
-sub wait_load_module {
- my ($in, $category, $text, $module) = @_;
- $in->wait_message('',
- [
- #-PO: the first %s is the card type (scsi, network, sound,...)
- #-PO: the second is the vendor+model name
- N("Installing driver for %s card %s", $category, $text), if_($::expert, N("(module %s)", $module))
- ]);
-}
-
-sub load_module__ask_options {
- my ($in, $module_descr, $parameters) = @_;
-
- my @parameters = map { [ @$_[0, 1, 2] ] } @$parameters;
-
- if (@parameters) {
- $in->ask_from('',
- N("You may now provide its options to module %s.\nNote that any address should be entered with the prefix 0x like '0x123'", $module_descr),
- [ map { { label => $_->[0] . ($_->[1] ? " ($_->[1])" : ''), help => $_->[2], val => \$_->[3] } } @parameters ],
- ) or return;
- [ map { if_($_->[3], "$_->[0]=$_->[3]") } @parameters ];
- } else {
- my $s = $in->ask_from_entry('',
-N("You may now provide options to module %s.
-Options are in format ``name=value name2=value2 ...''.
-For instance, ``io=0x300 irq=7''", $module_descr), N("Module options:")) or return;
- [ split ' ', $s ];
- }
-}
-
-sub load_category__prompt {
- my ($in, $category) = @_;
-
- (my $msg_type = $category) =~ s/\|.*//;
- my %available_modules = map_each { $::a => $::b ? "$::a ($::b)" : $::a } modules::category2modules_and_description($category);
- my $module = $in->ask_from_listf('',
-#-PO: the %s is the driver type (scsi, network, sound,...)
- N("Which %s driver should I try?", $msg_type),
- sub { $available_modules{$_[0]} },
- [ keys %available_modules ]) or return;
- my $module_descr = $available_modules{$module};
-
- my $options;
- require modules::parameters;
- my @parameters = modules::parameters::parameters($module);
- if (@parameters && $in->ask_from_list_('',
-formatAlaTeX(N("In some cases, the %s driver needs to have extra information to work
-properly, although it normally works fine without. Would you like to specify
-extra options for it or allow the driver to probe your machine for the
-information it needs? Occasionally, probing will hang a computer, but it should
-not cause any damage.", $module_descr)), [ N_("Autoprobe"), N_("Specify options") ], 'Autoprobe') ne 'Autoprobe') {
- $options = load_module__ask_options($in, $module_descr, \@parameters) or return;
- }
- while (1) {
- eval {
- my $_w = wait_load_module($in, $category, $module_descr, $module);
- log::l("user asked for loading module $module (type $category, desc $module_descr)");
- modules::load([ $module, @$options ]);
- };
- return $module_descr if !$@;
-
- $in->ask_yesorno('',
-N("Loading module %s failed.
-Do you want to try again with other parameters?", $module_descr), 1) or return;
-
- $options = load_module__ask_options($in, $module_descr, \@parameters) or return;
- }
-}
-
sub ask_users {
my ($prefix, $in, $users, $security) = @_;
diff --git a/perl-install/modules/interactive.pm b/perl-install/modules/interactive.pm
index e8b76e77c..c89ad7276 100644
--- a/perl-install/modules/interactive.pm
+++ b/perl-install/modules/interactive.pm
@@ -1,5 +1,6 @@
package modules::interactive;
use interactive;
+use modules;
use common;
sub config_window {
@@ -22,4 +23,120 @@ sub config_window {
}
}
+sub load_category {
+ my ($in, $category, $auto, $at_least_one) = @_;
+
+ my @l;
+ {
+ my $w;
+ my $wait_message = sub { $w = wait_load_module($in, $category, @_) };
+ @l = modules::load_category($category, $wait_message);
+ @l = modules::load_category($category, $wait_message, 'force') if !@l && $at_least_one;
+ }
+ if (my @err = grep { $_ } map { $_->{error} } @l) {
+ $in->ask_warn('', join("\n", @err));
+ }
+ return @l if $auto && (@l || !$at_least_one);
+
+ @l = map { $_->{description} } @l;
+
+ if ($at_least_one && !@l) {
+ @l = load_category__prompt($in, $category) or return;
+ }
+
+ load_category__prompt_for_more($in, $category, @l);
+}
+
+sub load_category__prompt_for_more {
+ my ($in, $category, @l) = @_;
+
+ (my $msg_type = $category) =~ s/\|.*//;
+
+ while (1) {
+ my $msg = @l ?
+ [ N("Found %s %s interfaces", join(", ", @l), $msg_type),
+ N("Do you have another one?") ] :
+ N("Do you have any %s interfaces?", $msg_type);
+
+ my $opt = [ N_("Yes"), N_("No") ];
+ push @$opt, N_("See hardware info") if $::expert;
+ my $r = $in->ask_from_list_('', $msg, $opt, "No") or return;
+ if ($r eq "No") { return @l }
+ if ($r eq "Yes") {
+ push @l, load_category__prompt($in, $category) || next;
+ } else {
+ $in->ask_warn('', [ detect_devices::stringlist() ]);
+ }
+ }
+}
+
+sub wait_load_module {
+ my ($in, $category, $text, $module) = @_;
+ $in->wait_message('',
+ [
+ #-PO: the first %s is the card type (scsi, network, sound,...)
+ #-PO: the second is the vendor+model name
+ N("Installing driver for %s card %s", $category, $text), if_($::expert, N("(module %s)", $module))
+ ]);
+}
+
+sub load_module__ask_options {
+ my ($in, $module_descr, $parameters) = @_;
+
+ my @parameters = map { [ @$_[0, 1, 2] ] } @$parameters;
+
+ if (@parameters) {
+ $in->ask_from('',
+ N("You may now provide its options to module %s.\nNote that any address should be entered with the prefix 0x like '0x123'", $module_descr),
+ [ map { { label => $_->[0] . ($_->[1] ? " ($_->[1])" : ''), help => $_->[2], val => \$_->[3] } } @parameters ],
+ ) or return;
+ [ map { if_($_->[3], "$_->[0]=$_->[3]") } @parameters ];
+ } else {
+ my $s = $in->ask_from_entry('',
+N("You may now provide options to module %s.
+Options are in format ``name=value name2=value2 ...''.
+For instance, ``io=0x300 irq=7''", $module_descr), N("Module options:")) or return;
+ [ split ' ', $s ];
+ }
+}
+
+sub load_category__prompt {
+ my ($in, $category) = @_;
+
+ (my $msg_type = $category) =~ s/\|.*//;
+ my %available_modules = map_each { $::a => $::b ? "$::a ($::b)" : $::a } modules::category2modules_and_description($category);
+ my $module = $in->ask_from_listf('',
+#-PO: the %s is the driver type (scsi, network, sound,...)
+ N("Which %s driver should I try?", $msg_type),
+ sub { $available_modules{$_[0]} },
+ [ keys %available_modules ]) or return;
+ my $module_descr = $available_modules{$module};
+
+ my $options;
+ require modules::parameters;
+ my @parameters = modules::parameters::parameters($module);
+ if (@parameters && $in->ask_from_list_('',
+formatAlaTeX(N("In some cases, the %s driver needs to have extra information to work
+properly, although it normally works fine without. Would you like to specify
+extra options for it or allow the driver to probe your machine for the
+information it needs? Occasionally, probing will hang a computer, but it should
+not cause any damage.", $module_descr)), [ N_("Autoprobe"), N_("Specify options") ], 'Autoprobe') ne 'Autoprobe') {
+ $options = load_module__ask_options($in, $module_descr, \@parameters) or return;
+ }
+ while (1) {
+ eval {
+ my $_w = wait_load_module($in, $category, $module_descr, $module);
+ log::l("user asked for loading module $module (type $category, desc $module_descr)");
+ modules::load([ $module, @$options ]);
+ };
+ return $module_descr if !$@;
+
+ $in->ask_yesorno('',
+N("Loading module %s failed.
+Do you want to try again with other parameters?", $module_descr), 1) or return;
+
+ $options = load_module__ask_options($in, $module_descr, \@parameters) or return;
+ }
+}
+
1;
diff --git a/perl-install/network/ethernet.pm b/perl-install/network/ethernet.pm
index f9d97e00c..69135e363 100644
--- a/perl-install/network/ethernet.pm
+++ b/perl-install/network/ethernet.pm
@@ -2,7 +2,7 @@ package network::ethernet;
use network::network;
use modules;
-use any;
+use modules::interactive;
use detect_devices;
use common;
use run_program;
@@ -82,7 +82,7 @@ qq(
sub conf_network_card {
my ($netc, $intf, $type, $ipadr, $netadr) = @_;
#-type =static or dhcp
- any::load_category($in, 'network/main|usb', !$::expert, 1);
+ modules::interactive::load_category($in, 'network/main|usb', !$::expert, 1);
my @all_cards = conf_network_card_backend($netc, $intf, $type, undef, $ipadr, $netadr);
my $interface;
@all_cards == () and $in->ask_warn('', N("No ethernet network adapter has been detected on your system.
@@ -172,7 +172,7 @@ sub go_ethernet {
sub configureNetwork {
my ($netc, $intf, $_first_time) = @_;
local $_;
- any::load_category($in, 'network/main|usb|pcmcia', !$::expert, 1) or return;
+ modules::interactive::load_category($in, 'network/main|usb|pcmcia', !$::expert, 1) or return;
my @l = detect_devices::getNet() or die N("no network card found");
my @all_cards = conf_network_card_backend($netc, $intf, undef, undef, undef, undef);