aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorghost <andreas.monzner@multimedia-labs.de>2010-11-15 21:06:49 +0100
committerghost <andreas.monzner@multimedia-labs.de>2010-11-15 21:06:49 +0100
commit53c44df02c114d2160fc35c304d278ca3e54e7bd (patch)
tree6dac38a9ba9831e6b063f879caead50fa68d6c8e /lib
parentf0c5ac102ddaf0bfbf86743a5aec0ea4accc605c (diff)
downloadenigma2-53c44df02c114d2160fc35c304d278ca3e54e7bd.tar.gz
enigma2-53c44df02c114d2160fc35c304d278ca3e54e7bd.zip
Components/Harddisc.py: fix handling for old devfs 7025 kernel
i.e. this fixes broken free space displaying in aboutbox refs bug#598
Diffstat (limited to 'lib')
-rw-r--r--[-rwxr-xr-x]lib/python/Components/Harddisk.py47
1 files changed, 33 insertions, 14 deletions
diff --git a/lib/python/Components/Harddisk.py b/lib/python/Components/Harddisk.py
index e8e612a4..7f837565 100755..100644
--- a/lib/python/Components/Harddisk.py
+++ b/lib/python/Components/Harddisk.py
@@ -5,6 +5,10 @@ from SystemInfo import SystemInfo
import time
from Components.Console import Console
+def MajorMinor(path):
+ rdev = stat(path).st_rdev
+ return (major(rdev),minor(rdev))
+
def readFile(filename):
file = open(filename)
data = file.read().strip()
@@ -125,13 +129,15 @@ class Harddisk:
for line in lines:
parts = line.strip().split(" ")
- if path.realpath(parts[0]).startswith(self.dev_path):
- try:
+ real_path = path.realpath(parts[0])
+ if not real_path[-1].isdigit():
+ continue
+ try:
+ if MajorMinor(real_path) == MajorMinor(self.partitionPath(real_path[-1])):
stat = statvfs(parts[1])
- except OSError:
- continue
- return stat.f_bfree/1000 * stat.f_bsize/1000
-
+ return stat.f_bfree/1000 * stat.f_bsize/1000
+ except OSError:
+ pass
return -1
def numPartitions(self):
@@ -168,10 +174,17 @@ class Harddisk:
cmd = "umount"
- for line in lines:
- parts = line.strip().split(" ")
- if path.realpath(parts[0]).startswith(self.dev_path):
- cmd = ' ' . join([cmd, parts[1]])
+ for line in lines:
+ parts = line.strip().split(" ")
+ real_path = path.realpath(parts[0])
+ if not real_path[-1].isdigit():
+ continue
+ try:
+ if MajorMinor(real_path) == MajorMinor(self.partitionPath(real_path[-1])):
+ cmd = ' ' . join([cmd, parts[1]])
+ break
+ except OSError:
+ pass
res = system(cmd)
return (res >> 8)
@@ -201,10 +214,16 @@ class Harddisk:
res = -1
for line in lines:
parts = line.strip().split(" ")
- if path.realpath(parts[0]) == self.partitionPath("1"):
- cmd = "mount -t ext3 " + parts[0]
- res = system(cmd)
- break
+ real_path = path.realpath(parts[0])
+ if not real_path[-1].isdigit():
+ continue
+ try:
+ if MajorMinor(real_path) == MajorMinor(self.partitionPath(real_path[-1])):
+ cmd = "mount -t ext3 " + parts[0]
+ res = system(cmd)
+ break
+ except OSError:
+ pass
return (res >> 8)