From 63e57518b73d6d923ca9beb2914cfc6c7c0c5cf6 Mon Sep 17 00:00:00 2001 From: Olivier Blin Date: Tue, 31 Jul 2007 14:15:56 +0000 Subject: move old transfugdrake in old/ --- transfugdrake.pm | 164 ------------------------------------------------------- 1 file changed, 164 deletions(-) delete mode 100644 transfugdrake.pm (limited to 'transfugdrake.pm') diff --git a/transfugdrake.pm b/transfugdrake.pm deleted file mode 100644 index b14ec36..0000000 --- a/transfugdrake.pm +++ /dev/null @@ -1,164 +0,0 @@ -package transfugdrake; - -use common; - -# From pixel and gc -sub arch() { - my $t = `uname -m`; - chomp $t; - $t; -} - -# From pixel and gc -sub cat_ { local *F; open F, $_[0] or $_[1] ? die "cat of file $_[0] failed: $!\n" : return; my @l = ; wantarray ? @l : join '', @l } - -# From pixel and gc -sub typeFromMagic { - my $f = shift; - my $tmp; - my @partitions_signatures = ( - # [ 0x8e, 0, "HM\1\0" ], - # [ 0x83, 0x438, "\x53\xEF" ], - #[ 0x183, 0x10034, "ReIsErFs" ], - #[ 0x183, 0x10034, "ReIsEr2Fs" ], - #[ 0x283, 0, 'XFSB', 0x200, 'XAGF', 0x400, 'XAGI' ], - #[ 0x383, 0x8000, 'JFS1' ], - #[ 0x82, 4086, "SWAP-SPACE" ], - #[ 0x82, 4086, "SWAPSPACE2" ], - [ 0x7, 0x1FE, "\x55\xAA", 0x3, "NTFS" ], - [ 0xc, 0x1FE, "\x55\xAA", 0x52, "FAT32" ], - arch() !~ /^sparc/ ? ( [ 0x6, 0x1FE, "\x55\xAA", 0x36, "FAT" ],) : (), - ); - - local *F; - sysopen F, $f, 0 or return; - - M: foreach (@partitions_signatures) { - my ($name, @l) = @$_; - - while (@l) { - my ($offset, $signature) = splice(@l, 0, 2); - sysseek(F, $offset, 0) or next M; - sysread(F, $tmp, length $signature); - if($tmp ne $signature) { next M; } - } - return $name; - } - return -1; -} - -sub get_windows_partition { - my $in = $_[0]; - - my %type2name = ( - 0x1 => 'DOS 12-bit FAT', - 0x4 => 'DOS 16-bit FAT (up to 32M)', - 0x5 => 'DOS 3.3+ Extended Partition', - 0x6 => 'DOS FAT16', - 0x7 => 'NTFS (or HPFS)', - 0xb => 'Win98 FAT32', - 0xc => 'Win98 FAT32, LBA-mapped', - 0xe => 'Win95: DOS 16-bit FAT, LBA-mapped', - 0xf => 'Win95: Extended partition, LBA-mapped', - 0x82 => 'Linux Swap', - 0x83 => 'Ext2', - 0x183 => 'ReiserFS', - 0x283 => 'XFS', - 0x383 => 'JFS', - 0x85 => 'Linux extended partition', - 0x87 => 'NTFS volume set', - 0x8e => 'Linux LVM', - -1 => 'unknown' - ); - - my (undef, undef, @parts) = cat_('/proc/partitions'); - my @fat_parts; - my $i = 0; - my $devname = ""; - my @ls_array; - my @tmp_array; - my $fstype; - - P: foreach (@parts) { - my (undef, undef, $blocks, $dev) = split or next; - - my %skip_conditions = ( - "Skipping <$dev> because too little blocks ($blocks)" => ($blocks <= 1), - "Skipping <$dev> because doesn't end with a number (e.g. seems to not be a partition)" => ($dev !~ /\d$/), - ); - $skip_conditions{$_} and ($verbose and print(STDERR $_, "\n")), next P foreach keys %skip_conditions; - my $type = typeFromMagic("/dev/$dev"); - - if($type2name{$type} =~ /NTFS/ || $type2name{$type} =~ /FAT32/ || $type2name{$type} =~ /FAT/) { - $devname = `cd /dev/; ls -l | grep '$dev' ; cd -`; - @ls_array = split(' ', $devname); - $fat_parts[$i] = "/dev/$ls_array[8] ($type2name{$type})"; - $i++; - } - } - - if($fat_parts[0] eq "") { $in->ask_warn(N("No Windows Partition"), N("No Windows Partition found")); quit_global($in, 0); } - $::Wizard_no_previous = 1; - my $win_part = $in->ask_from_list_(N("Select your windows partition"), - N("Please specify your windows partition from the following list"), - [ @fat_parts ], - $fat_parts[0]) - or quit_global($in, 0); - if($fat_parts[1] eq "") { $in->ask_warn(N("Your Windows Partition"), N("$fat_parts[0] is found as your Windows partition")); } - - if($win_part =~ /NTFS/) { $fstype = "ntfs"; } - elsif($win_part =~ /FAT32/) {$fstype = "msdos"; } - elsif($win_part =~ /FAT/) {$fstype = "msdos"; } - - @tmp_array = split(' ', $win_part); - $win_part = $tmp_array[0]; - return ($win_part, $fstype); -} - -sub mount_partition { - my $fstype = $_[0]; - my $win_partition = $_[1]; - my $mountpoint = "/mnt/transfug"; - my @mounts; - my $mounted = 0; - my @tmp; - - (@mounts) = cat_('/proc/mounts'); - - foreach (@mounts) { - @tmp = split(' ', $_); - if($tmp[0] eq $win_partition) { - $mounted = 1; - $mountpoint = $tmp[1]; - } - } - - if(!$mounted) { - mkdir($mountpoint); - - print "mount -t $fstype $win_partition $mountpoint\n"; - if(`mount -t $fstype $win_partition $mountpoint`) { print "Error\n:"; } - } - - return $mountpoint; -} - -sub get_windows_config { - my %config; - my $in = $_[0]; - - # Get the windows partition - ($config->{partition}, $config->{fstype}) = get_windows_partition($in); - - # Mount it - $config->{mountpoint} = mount_partition($config->{fstype}, $config->{partition}); - - # Find where the documents are - # If possible, get some registry config - return ($config->{partition}, $config->{fstype}, $config->{mountpoint}); -} - -sub get_linux_config { -} - -1; -- cgit v1.2.1