summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xrescue/drvinst81
1 files changed, 18 insertions, 63 deletions
diff --git a/rescue/drvinst b/rescue/drvinst
index 8066f0f0a..78c6f5c74 100755
--- a/rescue/drvinst
+++ b/rescue/drvinst
@@ -12,81 +12,36 @@
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
-local $_ = join '', @ARGV;
+use lib qw(../perl-install /usr/lib/libDrakX);
+use common;
+use detect_devices;
-"@ARGV" =~ /-h/ and die "usage: drivers_install [drivertype1 drivertype2..]\n";
+$ARGV[0] =~ /^--?h/ and die "usage: drivers_install [drivertype1 [drivertype2 ...]]\n";
+my @types = @ARGV;
-
-sub pci_probe {
- my @l;
- foreach (`/usr/bin/lspcidrake -v`) {
- push @l, do {
- if (/^(\S+)\s*: (.+) \[([^\]]+)/) {
- { driver => $1, description => $2, type => $3 };
- } elsif (/^(\S+)\s*: (.+)/) {
- { driver => $1, description => $2, type => 'NOT_DEFINED' };
- } else {
- next;
- }
- };
- }
- @l;
+sub install_module_raw {
+ my ($driver, $o_descr) = @_;
+ print STDERR "Installing driver $driver", $o_descr ? " (for \"$o_descr\")" : '', "\n";
+ system("/sbin/modprobe", $driver) and print "\tfailed\n";
}
-sub install_module($$) {
+my $already_usb;
+sub install_module {
my ($driver, $descr) = @_;
- print "Installing driver $driver (for \"$descr\")\n";
- system("/sbin/modprobe", $driver) and print "\tfailed\n";
- my $already_usb if 0;
+ install_module_raw($driver, $descr);
if (!$already_usb && $driver =~ /usb/) {
$already_usb = 1;
- print "Installing driver usbkdb\n";
- system('/sbin/modprobe', 'usbkbd') and print "\tfailed\n";
- print "Installing driver keybdev\n";
- system('/sbin/modprobe', 'keybdev') and print "\tfailed\n";
+ install_module_raw('usbkbd');
+ install_module_raw('keybdev');
}
}
-
#- start
-foreach $card (pci_probe()) {
- $card->{type} eq "DISPLAY_VGA" and next;
- $card->{driver} eq "unknown" and next;
- $card->{driver} =~ "Card:" and next;
+foreach my $card (detect_devices::pci_probe()) {
+ $card->{driver} eq 'unknown' || $card->{driver} =~ /:/ and next;
+ $card->{media_type} eq "DISPLAY_VGA" and next;
- if (!@ARGV || grep { $card->{type} =~ /$_/i } @ARGV) {
+ if (!@ARGV || find { $card->{media_type} =~ /$_/i } @types) {
install_module($card->{driver}, $card->{description});
}
}
-
-
-
-#-------------------------------------------------
-#- $Log$
-#- Revision 1.8 2005/04/19 13:10:25 prigaux
-#- mandriva switch
-#-
-#- Revision 1.7 2004/07/20 02:42:12 prigaux
-#- MandrakeSoft -> Mandrakesoft
-#-
-#- Revision 1.6 2002/09/10 10:07:23 gc
-#- drvinst <param> is broken when we don't -v
-#-
-#- Revision 1.5 2001/09/27 16:00:05 gc
-#- don't install usb keyboard drivers more than once
-#-
-#- Revision 1.4 2001/09/27 15:57:55 gc
-#- try to fix usb keyboards
-#-
-#- Revision 1.3 2001/03/29 11:33:28 gc
-#- test for "Card:" and not install, some videoboards are not reported as DISPLAY_VGA :-(
-#-
-#- Revision 1.2 2001/02/12 18:42:17 uid553
-#- pixelization
-#-
-#- Revision 1.1 2001/02/12 14:31:10 uid535
-#- - add lspci, lspcidrake, vim-minimal
-#- - better /etc/issue
-#- - better PS1
-#- - write embryonic tool (installation of detected drivers according to pci cards)
-#-