diff options
Diffstat (limited to 'perl-install/modules/any_conf.pm')
| -rw-r--r-- | perl-install/modules/any_conf.pm | 80 |
1 files changed, 45 insertions, 35 deletions
diff --git a/perl-install/modules/any_conf.pm b/perl-install/modules/any_conf.pm index 0af11a461..c235e84f4 100644 --- a/perl-install/modules/any_conf.pm +++ b/perl-install/modules/any_conf.pm @@ -1,17 +1,12 @@ -package modules::any_conf; # $Id$ +package modules::any_conf; use log; use common; sub vnew { - if (c::kernel_version() =~ /^\Q2.6/) { - require modules::modprobe_conf; - modules::modprobe_conf->new; - } else { - require modules::modules_conf; - modules::modules_conf->new; - } + require modules::modprobe_conf; + modules::modprobe_conf->new; } @@ -37,7 +32,7 @@ sub get_options { sub set_options { my ($conf, $module, $new_option) = @_; $module = $conf->mapping($module); - log::l(qq(set option "$new_option" for module "$module")); + log::explanations(qq(set option "$new_option" for module "$module")); $conf->{$module}{options} = $new_option; } sub get_parameters { @@ -53,7 +48,7 @@ sub get_probeall { sub _set_probeall { my ($conf, $alias, $modules) = @_; $conf->{$alias}{probeall} = $modules; - log::l("setting probeall $alias to $modules"); + log::explanations("setting probeall $alias to $modules"); } sub add_probeall { my ($conf, $alias, $module) = @_; @@ -73,7 +68,7 @@ sub set_alias { $module =~ /ignore/ and return; $module = $conf->mapping($module); /\Q$alias/ && $conf->{$_}{alias} && $conf->{$_}{alias} eq $module and return $_ foreach keys %$conf; - log::l("adding alias $alias to $module"); + log::explanations("adding alias $alias to $module"); $conf->{$alias}{alias} = $module; $alias; } @@ -81,13 +76,13 @@ sub set_alias { sub remove_alias { my ($conf, $name) = @_; - log::l(qq(removing alias "$name")); + log::explanations(qq(removing alias "$name")); $conf->remove_alias_regexp("^$name\$"); } sub remove_alias_regexp { my ($conf, $aliased) = @_; - log::l(qq(removing all aliases that match "$aliased")); + log::explanations(qq(removing all aliases that match "$aliased")); foreach (keys %$conf) { delete $conf->{$_}{alias} if /$aliased/; } @@ -95,7 +90,7 @@ sub remove_alias_regexp { sub remove_alias_regexp_byname { my ($conf, $name) = @_; - log::l(qq(removing all aliases which names match "$name")); + log::explanations(qq(removing all aliases which names match "$name")); foreach (keys %$conf) { delete $conf->{$_} if /$name/; } @@ -103,9 +98,16 @@ sub remove_alias_regexp_byname { sub remove_module { my ($conf, $module) = @_; + return if !$module; $module = $conf->mapping($module); + foreach my $file ("$::prefix/etc/modules", "$::prefix/etc/modprobe.preload") { + substInFile { + undef $_ if /^$module/; + } $file; + } + $conf->remove_alias($module); - log::l("removing module $module"); + log::explanations("removing module $module"); delete $conf->{$module}; 0; } @@ -124,18 +126,8 @@ sub set_sound_slot { sub read { my (undef, $o_file) = @_; - my $conf = modules::any_conf::vnew(); - my $raw_conf = modules::any_conf::read_raw($o_file || $::prefix . $conf->file); - - foreach my $module (keys %$raw_conf) { - my $raw = $raw_conf->{$module}; - my $keep = $conf->{$module} = {}; - foreach ($conf->handled_fields) { - $keep->{$_} = $raw->{$_} if $raw->{$_}; - } - } - - $conf; + my $conf = vnew(); + $conf->read($o_file); } sub write { @@ -147,10 +139,7 @@ sub write { #- Substitute new config (if config has changed) substInFile { my ($type, $module, $val) = split(' ', chomp_($_), 3); - if ($type eq 'post-install' && $module eq 'supermount') { - #- remove the post-install supermount stuff. - $_ = ''; - } elsif (member($type, $conf->handled_fields)) { + if (member($type, $conf->handled_fields)) { my $new_val = $conf->{$module}{$type}; if (!$new_val) { $_ = ''; @@ -174,10 +163,34 @@ sub write { modules::write_preload_conf($conf); } +sub merge_into { + my ($conf, $conf2) = @_; - + if (ref($conf) eq ref($conf2)) { + log::l("merging " . ref($conf)); + add2hash($conf, $conf2); + } else { + log::l("not merging modules_conf " . ref($conf2) . " into " . ref($conf)); + } +} ################################################################################ +sub read_handled { + my ($conf, $o_file) = @_; + my $file = $o_file || $::prefix . $conf->file; + my $raw_conf = read_raw($file); + + foreach my $module (keys %$raw_conf) { + my $raw = $raw_conf->{$module}; + my $keep = $conf->{$module} = {}; + foreach ($conf->handled_fields) { + $keep->{$_} = $raw->{$_} if $raw->{$_}; + } + } + + $conf; +} + sub read_raw { my ($file) = @_; my %c; @@ -187,9 +200,6 @@ sub read_raw { s/#.*$//; s/\s+$//; - s/\b(snd-card-)/snd-/g; - s/\b(snd-via686|snd-via8233)\b/snd-via82xx/g; - my ($type, $module, $val) = split(' ', $_, 3) or next; $c{$module}{$type} = $val; |
