aboutsummaryrefslogtreecommitdiffstats
path: root/transfugdrake.pm
diff options
context:
space:
mode:
authorOlivier Blin <oblin@mandriva.com>2007-07-31 14:15:56 +0000
committerOlivier Blin <oblin@mandriva.com>2007-07-31 14:15:56 +0000
commit63e57518b73d6d923ca9beb2914cfc6c7c0c5cf6 (patch)
treebe83e212f417f736dc8c3d0a01bd1292e5770752 /transfugdrake.pm
parentd95b10faf7f846d1fcdce63e267a28ab076dcb06 (diff)
downloadtransfugdrake-63e57518b73d6d923ca9beb2914cfc6c7c0c5cf6.tar
transfugdrake-63e57518b73d6d923ca9beb2914cfc6c7c0c5cf6.tar.gz
transfugdrake-63e57518b73d6d923ca9beb2914cfc6c7c0c5cf6.tar.bz2
transfugdrake-63e57518b73d6d923ca9beb2914cfc6c7c0c5cf6.tar.xz
transfugdrake-63e57518b73d6d923ca9beb2914cfc6c7c0c5cf6.zip
move old transfugdrake in old/
Diffstat (limited to 'transfugdrake.pm')
-rw-r--r--transfugdrake.pm164
1 files changed, 0 insertions, 164 deletions
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 = <F>; 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;