diff options
author | Olivier Blin <oblin@mandriva.com> | 2007-09-19 18:26:34 +0000 |
---|---|---|
committer | Olivier Blin <oblin@mandriva.com> | 2007-09-19 18:26:34 +0000 |
commit | dfaa86767d31dbf1635ac3647751e2be1ba91f5e (patch) | |
tree | 231c39ae34ee32ea68cba4b25e6cfcdf32363e9a /transfugdrake | |
parent | 6e03fb54877c94cdf63d56bc0edaa0ee2cefb78b (diff) | |
download | transfugdrake-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-x | transfugdrake | 49 |
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; } |