diff options
Diffstat (limited to 'perl-install')
-rw-r--r-- | perl-install/any.pm | 37 | ||||
-rw-r--r-- | perl-install/common.pm | 7 | ||||
-rw-r--r-- | perl-install/install_steps.pm | 12 | ||||
-rw-r--r-- | perl-install/lang.pm | 8 | ||||
-rw-r--r-- | perl-install/partition_table.pm | 8 | ||||
-rw-r--r-- | perl-install/share/compssList | 2 | ||||
-rwxr-xr-x | perl-install/standalone/adduserdrake | 30 | ||||
-rw-r--r-- | perl-install/timezone.pm | 17 |
8 files changed, 91 insertions, 30 deletions
diff --git a/perl-install/any.pm b/perl-install/any.pm new file mode 100644 index 000000000..5b2fef5c3 --- /dev/null +++ b/perl-install/any.pm @@ -0,0 +1,37 @@ +package any; + +use diagnostics; +use strict; + +#-###################################################################################### +#- misc imports +#-###################################################################################### +use common qw(:file :system :common :functional); + +sub addKdmUsers { + my ($prefix, @users) = @_; + require timezone; + my @u1 = my @users_male = qw(tie default curly); + my @u2 = my @users_female = qw(brunette girl woman-blond); + foreach (@users) { + my $l = rand() < timezone::sexProb($_->{name}) ? \@u2 : \@u1; + my $u = splice(@$l, rand(@$l), 1); #- known biased (see cookbook for better) + symlink "../../../../icons/user-$u-mdk.xpm", "$prefix/usr/share/apps/kdm/pics/users/$_.xpm"; + @u1 = @users_male unless @u1; + @u2 = @users_female unless @u2; + } + symlinkf "../../../../icons/user-hat-mdk.xpm", "$prefix/usr/share/apps/kdm/pics/users/root.xpm" unless $::isStandalone; +} + +sub addUsers { + my ($prefix, @users) = @_; + my $msec = "$prefix/etc/security/msec"; + foreach my $u (@users) { + substInFile { s/^$u\n//; $_ .= "$u\n" if eof } "$msec/user.conf" if -d $msec; + } + run_program::rooted($prefix, "/etc/security/msec/init-sh/grpuser.sh --refresh"); + + addKdmUsers($prefix, @users); +} + +1; diff --git a/perl-install/common.pm b/perl-install/common.pm index b48199abc..13d7c1d20 100644 --- a/perl-install/common.pm +++ b/perl-install/common.pm @@ -34,7 +34,12 @@ sub fold_left(&@) { $a } -sub _ { my $s = shift @_; sprintf translate($s), @_ } +sub _ { + my $s = shift @_; my $t = translate($s); + $t && ref $t or return sprintf $t, @_; + my ($T, @p) = @$t; + sprintf $T, @_[@p]; +} #-delete $main::{'_'}; sub __ { $_[0] } sub even($) { $_[0] % 2 == 0 } diff --git a/perl-install/install_steps.pm b/perl-install/install_steps.pm index 4a252c29b..f57ed6550 100644 --- a/perl-install/install_steps.pm +++ b/perl-install/install_steps.pm @@ -488,18 +488,8 @@ sub addUser($) { eval { commands::chown_("-r", "$u->{uid}.$u->{gid}", "$p$u->{home}") } if $u->{uid} != $u->{oldu} || $u->{gid} != $u->{oldg}; - my $msec = "$o->{prefix}/etc/security/msec"; - substInFile { s/^$u->{name}\n//; $_ .= "$u->{name}\n" if eof } "$msec/user.conf" if -d $msec; } - run_program::rooted($o->{prefix}, "/etc/security/msec/init-sh/grpuser.sh --refresh"); - - my @users = qw(tie brunette default girl woman-blond); - my @u = @users; push @u, @users while @u < @l; @u = @u[0..$#l]; - foreach (@l) { - my $u = splice(@u, rand(@u), 1); #- known biased (see cookbook for better) - symlink "../../../../icons/util-$u.xpm", "$o->{prefix}/usr/share/apps/kdm/pics/users/$_->{name}.xpm"; - } - symlinkf "../../../../icons/util-hat.xpm", "$o->{prefix}/usr/share/apps/kdm/pics/users/root.xpm"; + any::addUsers($o->{prefix}, map { $_->{name} } @l); } #------------------------------------------------------------------------------ diff --git a/perl-install/lang.pm b/perl-install/lang.pm index 7a4d77785..897305b8c 100644 --- a/perl-install/lang.pm +++ b/perl-install/lang.pm @@ -237,7 +237,13 @@ sub load_po($) { if (/^(#|$)/ && $state != 3) { $state = 3; - $s .= qq("$from" => "$to",\n) if $from; + if (my @l = $to =~ /%(\d+)\$/g) { + $to =~ s/%(\d+)\$/%/g; + $to = qq([ "$to", ) . join(",", map { $_ - 1 } @l) . " ],"; + } else { + $to = qq("$to"); + } + $s .= qq("$from" => $to,\n) if $from; $from = $to = ''; } $to .= (/"(.*)"/)[0] if $state == 1; diff --git a/perl-install/partition_table.pm b/perl-install/partition_table.pm index aa6912ab9..e8def5b18 100644 --- a/perl-install/partition_table.pm +++ b/perl-install/partition_table.pm @@ -436,8 +436,14 @@ sub remove($$) { } $i++; } + + my ($first, $second, $third) = map { $_->{normal} } @{$hd->{extended} || []}; + if ($third && $first eq $part) { + die "Can't handle removing hda5 when hda6 is not the second partition" if $second->{start} > $third->{start}; + } + #- otherwise search it in extended partitions - foreach (@{$hd->{extended}}) { + foreach (@{$hd->{extended} || []}) { $_->{normal} eq $part or next; delete $_->{normal}; #- remove it diff --git a/perl-install/share/compssList b/perl-install/share/compssList index f87395607..00bf0610d 100644 --- a/perl-install/share/compssList +++ b/perl-install/share/compssList @@ -189,7 +189,7 @@ gnomehack 50 0 45 gnomeicu 61 0 58 gnome-libs 0 0 55 gnome-libs-devel 10 0 55 -gnome-linuxconf 65 0 53 +gnome-linuxconf 69 0 69 gnome-media 60 0 58 gnome-objc 0 0 40 gnome-objc-devel 10 0 40 diff --git a/perl-install/standalone/adduserdrake b/perl-install/standalone/adduserdrake index 490f09b7e..0bc27dd94 100755 --- a/perl-install/standalone/adduserdrake +++ b/perl-install/standalone/adduserdrake @@ -4,6 +4,7 @@ use lib qw(/usr/lib/libDrakX); use common qw(:common :functional :system :file); use interactive; +use any; local $_ = join '', @ARGV; @@ -50,26 +51,25 @@ if ($in->ask_from_entries_refH( }, )) { push @users, $u; - $u->{pw} = $isMD5 ? c::crypt_md5($u->{password}, salt(8)) : crypt($u->{password}, salt(2)); - system("adduser $u->{name}"); - substInFile { + $u->{pw} = $isMD5 ? c::crypt_md5($u->{password}, salt(8)) : crypt($u->{password}, salt(2)); + $u = {}; + goto new; +} +my @u = map { $_->{name} } @users; + +system("adduser $_") foreach @u; +any::addUsers('', @u); + +substInFile { + foreach my $u (@users) { if (/^$u->{name}:/) { chomp; my %l; @l{@etc_pass_fields} = split ':'; add2hash($u, \%l); $_ = join(':', @$u{@etc_pass_fields}) . "\n"; } - } "/etc/passwd"; - - system("pwconv") if $isShadow; - - my $msec = "/etc/security/msec"; - substInFile { s/^$u->{name}\n//; $_ .= "$u->{name}\n" if eof } "$msec/user.conf" if -d $msec; - system("$msec/init-sh/grpuser.sh --refresh"); - - $u = {}; - goto new; -} - + } +} "/etc/passwd"; +system("pwconv") if $isShadow; $in->exit(0); diff --git a/perl-install/timezone.pm b/perl-install/timezone.pm index f0c7cb207..9c1427c76 100644 --- a/perl-install/timezone.pm +++ b/perl-install/timezone.pm @@ -78,4 +78,21 @@ sub bestTimezone { $l2t{common::bestMatchSentence($langtext, keys %l2t)}; } +my %sex = ( +fr_FR => { '[iln]a$' => 1, '[cdilnst]e$' => 1, 'e$' => .8, 'n$' => .1, 'd$' => .05 }, +en => { 'a$' => 1, 'o$' => 0, '[ln]$' => .3, '[rs]$' => .2 }, +); + + +sub sexProb($) { + local ($_) = @_; + my $l = $sex{$ENV{LC_ALL}} or return 0.5; + + my ($prob, $nb) = (0, 0); + foreach my $k (keys %$l) { + /$k/ and $prob += $l->{$k}, $nb++; + } + $nb ? $prob / $nb : 0.5; +} + 1; |