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) --- Makefile | 4 +++- transfugdrake | 49 +++++-------------------------------------------- transfugdrake.pm | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 45 deletions(-) create mode 100755 transfugdrake.pm diff --git a/Makefile b/Makefile index 68ec3a2..c84f418 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,7 @@ SBINDIR = $(DESTDIR)/usr/sbin XBINDIR = $(DESTDIR)/usr/X11R6/bin LOCALEDIR = $(DESTDIR)/usr/share/locale ICONSDIR = $(DESTDIR)/usr/lib/libDrakX/icons/ +PMSDIR=$(DESTDIR)/usr/lib/libDrakX CFLAGS = -Wall -g NAME = transfugdrake @@ -40,7 +41,8 @@ install_old: transfug_oe for d in $(SUBDIRS); do ( cd $$d ; make $@ ) ; done install: - install -d $(SBINDIR) $(ICONSDIR) + install -d $(SBINDIR) $(ICONSDIR) $(PMSDIR) install -m755 $(NAME) $(SBINDIR) + install -m644 $(NAME).pm $(PMSDIR) install -m644 $(wildcard data/icons/*.png) $(ICONSDIR) for d in $(SUBDIRS); do make -C $$d $@; done 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; } 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