aboutsummaryrefslogtreecommitdiffstats
path: root/transfugdrake
diff options
context:
space:
mode:
authorOlivier Blin <oblin@mandriva.com>2007-09-19 18:26:34 +0000
committerOlivier Blin <oblin@mandriva.com>2007-09-19 18:26:34 +0000
commitdfaa86767d31dbf1635ac3647751e2be1ba91f5e (patch)
tree231c39ae34ee32ea68cba4b25e6cfcdf32363e9a /transfugdrake
parent6e03fb54877c94cdf63d56bc0edaa0ee2cefb78b (diff)
downloadtransfugdrake-dfaa86767d31dbf1635ac3647751e2be1ba91f5e.tar
transfugdrake-dfaa86767d31dbf1635ac3647751e2be1ba91f5e.tar.gz
transfugdrake-dfaa86767d31dbf1635ac3647751e2be1ba91f5e.tar.bz2
transfugdrake-dfaa86767d31dbf1635ac3647751e2be1ba91f5e.tar.xz
transfugdrake-dfaa86767d31dbf1635ac3647751e2be1ba91f5e.zip
split some of transfugdrake code in a module (to be used in userdrake)
Diffstat (limited to 'transfugdrake')
-rwxr-xr-xtransfugdrake49
1 files changed, 5 insertions, 44 deletions
diff --git a/transfugdrake b/transfugdrake
index 07ee1dc..bcfacc4 100755
--- a/transfugdrake
+++ b/transfugdrake
@@ -7,11 +7,12 @@ use standalone;
use wizards;
use interactive;
use common;
+use transfugdrake;
my %distrib = distrib();
-my $windows_disk = get_windows_disk();
+my $windows_disk = transfugdrake::get_windows_disk();
my @linux_users = list_users();
-my @windows_users = list_windows_users($windows_disk);
+my @windows_users = transfugdrake::list_windows_users($windows_disk);
my @windows_items;
my $linux_user;
@@ -62,7 +63,7 @@ my $wiz = wizards->new({
},
],
post => sub {
- @windows_items = list_windows_items($windows_disk, $windows_user);
+ @windows_items = transfugdrake::list_windows_items($windows_disk, $windows_user);
@steps = map { $_->[0] } grep { intersection(\@windows_items, $_->[1]) } group_by2(@step_items);
@steps or return 'nothing';
next_step();
@@ -166,45 +167,5 @@ sub step_import {
my ($stepname) = @_;
my $step = find { $_->[0] eq $stepname } group_by2(@step_items);
my @targets = intersection(\@windows_items, $step->[1]);
- import_target($windows_disk, $windows_user, $linux_user, $_) foreach @targets;
-}
-
-sub get_windows_disk() {
- require fs;
- require fs::type;
-
- my $fstab = [ fs::read_fstab($::prefix, '/etc/fstab', '') ];
- fs::merge_info_from_mtab($fstab);
-
- my @win_devices = grep { fs::type::isFat_or_NTFS($_) && fs::type::isMounted($_) } @$fstab;
- find { -e "$_/WINDOWS/system32/config/software" } map { $_->{mntpoint} } @win_devices;
-}
-
-sub list_windows_users {
- my ($win_prefix) = @_;
- my @users = chomp_(split(/,\s*/, run_program::get_stdout("ma-search-users", "windowsxp", $win_prefix)));
- my ($standard, $admin) = partition { $_ ne "Administrator" } @users;
- sort(@$standard), @$admin;
-}
-
-sub list_windows_items {
- my ($win_prefix, $win_user) = @_;
- chomp_(split(/,\s*/, run_program::get_stdout("ma-search-items",
- "--ostype=windowsxp",
- "--path=$win_prefix",
- "--user=$win_user")));
-}
-
-sub import_target {
- my ($win_prefix, $win_user, $linux_user, $target) = @_;
- my $lc_target = lc($target);
- $lc_target =~ s/\s//g;
- run_program::raw({ timeout => "never" },
- "ma-import",
- "--ostype=windowsxp",
- "--fromuser=$win_user",
- "--frompath=$win_prefix",
- "--touser=$linux_user",
- "--topath=/",
- "--target=$lc_target");
+ transfugdrake::import_target($windows_disk, $windows_user, $linux_user, $_) foreach @targets;
}