summaryrefslogtreecommitdiffstats
path: root/wineconfig/drivedetect.py
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-13 05:43:39 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-03-13 05:43:39 +0000
commit19ae07d0d443ff8b777f46bcbe97119483356bfd (patch)
treedae169167c23ba7c61814101995de21d6abac2e8 /wineconfig/drivedetect.py
downloadtde-guidance-19ae07d0d443ff8b777f46bcbe97119483356bfd.tar.gz
tde-guidance-19ae07d0d443ff8b777f46bcbe97119483356bfd.zip
Added KDE3 version of KDE Guidance utilities
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kde-guidance@1102646 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'wineconfig/drivedetect.py')
-rw-r--r--wineconfig/drivedetect.py122
1 files changed, 122 insertions, 0 deletions
diff --git a/wineconfig/drivedetect.py b/wineconfig/drivedetect.py
new file mode 100644
index 0000000..5916b18
--- /dev/null
+++ b/wineconfig/drivedetect.py
@@ -0,0 +1,122 @@
+#!/usr/bin/python
+# -*- coding: UTF-8 -*-
+###########################################################################
+# wineread.py - description #
+# ------------------------------ #
+# begin : Fri Mar 26 2004 #
+# copyright : (C) 2006 by Yuriy Kozlov #
+# email : [email protected] #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+###########################################################################
+
+import os
+import wineread
+
+""" Reads a default set of drives from /etc/fstab """
+
+fstabpath = "/etc/fstab"
+
+# Listed in winecfg
+ignored_fs_types = set(["devpts",
+ "tmpfs",
+ "proc",
+ "sysfs",
+ "swap",
+ "usbdevfs",
+ "rpc_pipefs",
+ "binfmt_misc"])
+
+# Listed in winecfg
+ignored_mnt_pts = set(["/boot"])
+
+cd_fs_types = set(["cdfs","udf","iso9660"])
+
+# An incomplete listing, I don't know how winecfg does this.
+# RAMFS is included here because I don't know what the correct type for it is in wine.
+hd_fs_types = set(["ext4","ext3","ext2","ext","fat","fat32","fat16","ntfs","reiserfs","reiser4",
+ "jfs","xfs","ramfs","vfat","ufs","hfs","hfsplus"])
+
+# Listed in winecfg
+net_fs_types = set(["nfs","nfs4","smbfs","cifs","coda"])
+
+def autodetect(drives=None):
+ """ Returns a set of drives found by scanning /etc/fstab, and an error code """
+ if not drives:
+ drives = wineread.GetEmptyDrives()
+ mappings = set()
+ if not drives[2][2]:
+ drives[2][2] = "../drive_c"
+ drives[2][3] = "hd"
+
+ for drive in drives:
+ mapping = drive[2]
+ if mapping:
+ mappings.add(mapping)
+
+ driveid = 3
+ fstab=open(fstabpath,'r')
+
+ for driveline in fstab:
+ if driveline[0] == '#' or len(driveline.strip()) == 0: # Comment or empty line
+ continue
+ else:
+ driveprops = driveline.split()
+ fs = driveprops[0]
+ mnt = driveprops[1]
+ fstypes = set(driveprops[2].split(','))
+
+ ignore = False
+ for fstype in fstypes:
+ if fstype in ignored_fs_types:
+ ignore = True
+ break
+
+ if mnt in ignored_mnt_pts or mnt in mappings:
+ ignore = True
+
+ if not ignore:
+ while drives[driveid][2]: # Drive is in use, don't overwrite.
+ driveid += 1
+ if driveid > 25:
+ return (1,drives)
+ drives[driveid][2] = mnt
+ if "/dev/fd" in fs or "floppy" in mnt:
+ drives[driveid][3] = "floppy"
+ elif fstype in cd_fs_types or "/dev/cdrom" in fs or "cdrom" in mnt:
+ drives[driveid][3] = "cdrom"
+ elif fstype in hd_fs_types:
+ drives[driveid][3] = "hd"
+ elif fstype in net_fs_types:
+ drives[driveid][3] = "network"
+ else:
+ drives[driveid][3] = "auto"
+ driveid += 1
+
+ fstab.close()
+ return (0,drives)
+
+def autodetectshelllinks(shelllinks = None):
+ """ Returns a default set of windows shell folder mappings """
+ if not shelllinks:
+ shelllinks = wineread.GetEmptyShellLinks()
+
+ for link in shelllinks:
+ if link[2]:
+ continue
+ else:
+ link[3] = "shellfolder"
+ #link[4] = wineread.winepath + "/dosdevices/c:/windows/profiles/" + os.environ['USER'] + "/" + link[1]
+ link[4] = wineread.defaultwinfolderspath + "\\" + link[1]
+ link[5] = wineread.defaultwinfolderspath + "\\" + link[1]
+ link[2] = os.environ['HOME']
+ if link[1] == "Desktop":
+ link[2] = os.environ['HOME'] + "/Desktop"
+
+ return shelllinks