summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2005-02-08 09:52:31 +0000
committerPascal Rigaux <pixel@mandriva.com>2005-02-08 09:52:31 +0000
commit7f02efda2f339ef66b7611371cd3a1783fd04a5c (patch)
treedb817b1f5ae07fdf7602d739ad0ae179830e1d5b
parent98f47ffc04b510e6263f1c294c55a77ab7e55fae (diff)
downloaddrakx-7f02efda2f339ef66b7611371cd3a1783fd04a5c.tar
drakx-7f02efda2f339ef66b7611371cd3a1783fd04a5c.tar.gz
drakx-7f02efda2f339ef66b7611371cd3a1783fd04a5c.tar.bz2
drakx-7f02efda2f339ef66b7611371cd3a1783fd04a5c.tar.xz
drakx-7f02efda2f339ef66b7611371cd3a1783fd04a5c.zip
workaround perl limitation
-rw-r--r--perl-install/fs/format.pm3
1 files changed, 2 insertions, 1 deletions
diff --git a/perl-install/fs/format.pm b/perl-install/fs/format.pm
index af6ee7a48..1b7b977cd 100644
--- a/perl-install/fs/format.pm
+++ b/perl-install/fs/format.pm
@@ -120,6 +120,7 @@ sub wait_message {
my ($in) = @_;
my ($w, $progress, $last_msg, $displayed);
+ my $on_expose = sub { $displayed = 1; 0 }; #- declared here to workaround perl limitation
$w, sub {
my ($msg, $current, $total) = @_;
if ($msg) {
@@ -130,7 +131,7 @@ sub wait_message {
if ($progress) {
#- don't show by default, only if we are given progress information
$progress->hide;
- $progress->signal_connect(expose_event => sub { $displayed = 1; 0 });
+ $progress->signal_connect(expose_event => $on_expose);
}
}
$w->set($msg);
sub get_probeall { my ($conf, $alias) = @_; #TODO } sub add_probeall { my ($conf, $alias, $module) = @_; #TODO my $l = $conf->{$alias}{probeall} ||= []; @$l = uniq(@$l, $module); log::l("setting probeall $alias to @$l"); } sub remove_probeall { my ($conf, $alias, $module) = @_; #TODO my $l = $conf->{$alias}{probeall} ||= []; @$l = grep { $_ ne $module } @$l; log::l("setting probeall $alias to @$l"); } ################################################################################ sub remove_braces { my ($s) = @_; $s =~ s/^\s*\{\s*(.*)\s*;\s*\}\s*$/$1/; $s; } sub non_virtual { my ($module, $s) = @_; my ($before, $options, $after) = $s =~ m!^(?:(.*);)? \s*(?:/sbin/)?modprobe\s+(-\S+\s+)*\Q$module\E \s*(?:&&\s*(.*))?$!x or return; $options =~ /--ignore-(install|remove)\b/ or return; ($before, $after) = map { remove_braces($_ || '') } $before, $after; $after =~ s!\s*;\s*/bin/true$!!; $before, $after; } sub after_modules { my ($module, $s) = @_; my (undef, $after) = non_virtual($module, $s) or return; } sub probeall { my ($module, $s) = @_; non_virtual($module, $s) and return; if ($s =~ /[{&|]/) { log::l("weird install line in modprobe.conf for $module: $s"); return; } $s ne '/bin/true' or return; #- we have "alias $module off" here $s =~ s!\s*;\s*/bin/true$!!; my @l = split(/\s*;\s*/, $s); [ map { if (m!^(?:/sbin/)?modprobe\s+(\S+)$!) { $1 } else { log::l("weird probeall string $_ (from install $module $s)"); (); } } @l ]; } sub parse { my ($type, $module, $s) = @_; member($type, 'install', 'remove') or return; if (my ($before, $after) = non_virtual($module, $s)) { [ if_($after, [ "post-$type", $after ]), if_($before, [ "pre-$type", $before ]), ]; } elsif (my $l = probeall($module, $s)) { [ [ 'probeall', @$l ] ]; } } 1;