add very experimental cutlist editor
[enigma2.git] / lib / python / Components / Harddisk.py
index 0009a6b81102b02992fb0c3dbe087cd9d75ebea0..37e957e41db8658d4980deec6acc1ce2849f70ae 100644 (file)
@@ -1,5 +1,7 @@
 import os
 
+from Tools.Directories import *
+
 def tryOpen(filename):
        try:
                procFile = open(filename)
@@ -21,13 +23,27 @@ class Harddisk:
                self.prochdx = num2prochdx(index)
                self.devidex = "/dev/ide/host%d/bus%d/target%d/lun0/" % (host, bus, target)
 
-       def hdindex(self):
+       def getIndex(self):
                return self.index
+
+       def bus(self):
+               ret = ""
+
+               if self.index & 2:
+                       ret = "External (CF) - "
+               else:
+                       ret = "Internal - "
+               
+               if self.index & 1:
+                       return ret + "Slave"
+               else:
+                       return ret + "Master"
+
        def capacity(self):
                procfile = tryOpen(self.prochdx + "capacity")
                
                if procfile == "":
-                       return -1
+                       return ""
 
                line = procfile.readline()
                procfile.close()
@@ -35,10 +51,12 @@ class Harddisk:
                try:
                        cap = int(line)
                except:
-                       return -1
+                       return ""
                
-               return cap      
-                                               
+               cap = cap / 1000 * 512 / 1000
+               
+               return "%d.%03d GB" % (cap/1024, cap%1024)
+                                                               
        def model(self):
                procfile = tryOpen(self.prochdx + "model")
                
@@ -85,7 +103,51 @@ class Harddisk:
                                numPart += 1
                return numPart
 
+       def unmount(self):
+               cmd = "/bin/umount " + self.devidex + "part*"
+               res = os.system(cmd)
+               return (res >> 8)
+
+       def createPartition(self):
+               cmd = "/sbin/sfdisk -f " + self.devidex + "disc"
+               sfdisk = os.popen(cmd, "w")
+               sfdisk.write("0,\n;\n;\n;\ny\n")
+               sfdisk.close()
+               return 0
+
+       def mkfs(self):
+               cmd = "/sbin/mkfs.ext3 -T largefile -m0 " + self.devidex + "part1"
+               res = os.system(cmd)
+               return (res >> 8)
+
+       def mount(self):
+               cmd = "/bin/mount -t ext3 " + self.devidex + "part1 /hdd"
+               res = os.system(cmd)
+               return (res >> 8)
+
+       def createMovieFolder(self):
+               res = os.system("mkdir " + resolveFilename(SCOPE_HDD))
+               return (res >> 8)
+               
+       errorList = [ _("Everything is fine"), _("Creating partition failed"), _("Mkfs failed"), _("Mount failed"), _("Create movie folder failed"), _("Unmount failed")]
+
+       def initialize(self):
+               self.unmount()
+
+               if self.createPartition() != 0:
+                       return -1
 
+               if self.mkfs() != 0:
+                       return -2
+
+               if self.mount() != 0:
+                       return -3
+
+               if self.createMovieFolder() != 0:
+                       return -4
+               
+               return 0
+               
 def existHDD(num):
        mediafile = tryOpen(num2prochdx(num) + "media")
 
@@ -111,19 +173,26 @@ class HarddiskManager:
                        
                        if hddNum > 8:
                                break
-               
+
+       def HDDCount(self):
+               cnt = 0
+               for hd in self.hdd:
+                       cnt = cnt + 1
+               return cnt      
+
        def HDDList(self):
                list = [ ]
                for hd in self.hdd:
-                       cap = hd.capacity() / 1000 * 512 / 1000
                        hdd = hd.model() + " (" 
-                       if hd.index & 1:
-                               hdd += "slave"
-                       else:   
-                               hdd += "master"
-                       if cap > 0:
-                               hdd += ", %d,%d GB" % (cap/1024, cap%1024)
+                       hdd += hd.bus()
+                       cap = hd.capacity()     
+                       if cap != "":
+                               hdd += ", " + cap
                        hdd += ")"
-
                        list.append((hdd, hd))
+
                return list
+
+harddiskmanager = HarddiskManager()
+
+