From dfaa86767d31dbf1635ac3647751e2be1ba91f5e Mon Sep 17 00:00:00 2001 From: Olivier Blin Date: Wed, 19 Sep 2007 18:26:34 +0000 Subject: split some of transfugdrake code in a module (to be used in userdrake) --- transfugdrake.pm | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100755 transfugdrake.pm (limited to 'transfugdrake.pm') diff --git a/transfugdrake.pm b/transfugdrake.pm new file mode 100755 index 0000000..ade1a13 --- /dev/null +++ b/transfugdrake.pm @@ -0,0 +1,47 @@ +package transfugdrake; + +use strict; +use warnings; +use common; + +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"); +} + +1; -- cgit v1.2.1