From 693e3eb98e0376a9a8b4dd4742f9d05453d52b9f Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Thu, 19 Sep 2013 22:12:07 +0200 Subject: Added fs_bsize method to utils --- pyload/utils/fs.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'pyload/utils/fs.py') diff --git a/pyload/utils/fs.py b/pyload/utils/fs.py index 52bf0bd51..bffb23016 100644 --- a/pyload/utils/fs.py +++ b/pyload/utils/fs.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- +import ctypes import os import sys from os.path import join @@ -12,7 +13,8 @@ if sys.getfilesystemencoding().startswith('ANSI'): def fs_encode(string): if type(string) == unicode: return string.encode('utf8') - return string + else: + return string fs_decode = decode #decode utf8 @@ -65,13 +67,20 @@ def free_space(folder): folder = fs_encode(folder) if os.name == "nt": - import ctypes - free_bytes = ctypes.c_ulonglong(0) ctypes.windll.kernel32.GetDiskFreeSpaceExW(ctypes.c_wchar_p(folder), None, None, ctypes.pointer(free_bytes)) return free_bytes.value else: - from os import statvfs - - s = statvfs(folder) + s = os.statvfs(folder) return s.f_frsize * s.f_bavail + +def fs_bsize(path): + path = fs_encode(path) + + if os.name == "nt": + drive = "%s\\" % os.path.splitdrive(path)[0] + cluster_sectors, sector_size = ctypes.c_longlong(0) + ctypes.windll.kernel32.GetDiskFreeSpaceW(ctypes.c_wchar_p(drive), ctypes.pointer(cluster_sectors), ctypes.pointer(sector_size), None, None) + return cluster_sectors * sector_size + else: + return os.statvfs(path).f_bsize -- cgit v1.2.3 From 3d35f842aeec225688a2923f394fa167e8977011 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 5 Oct 2013 18:10:49 +0200 Subject: Put ctypes under if condition --- pyload/utils/fs.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'pyload/utils/fs.py') diff --git a/pyload/utils/fs.py b/pyload/utils/fs.py index bffb23016..56f76c490 100644 --- a/pyload/utils/fs.py +++ b/pyload/utils/fs.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- -import ctypes import os import sys from os.path import join @@ -67,6 +66,8 @@ def free_space(folder): folder = fs_encode(folder) if os.name == "nt": + import ctypes + free_bytes = ctypes.c_ulonglong(0) ctypes.windll.kernel32.GetDiskFreeSpaceExW(ctypes.c_wchar_p(folder), None, None, ctypes.pointer(free_bytes)) return free_bytes.value @@ -78,6 +79,8 @@ def fs_bsize(path): path = fs_encode(path) if os.name == "nt": + import ctypes + drive = "%s\\" % os.path.splitdrive(path)[0] cluster_sectors, sector_size = ctypes.c_longlong(0) ctypes.windll.kernel32.GetDiskFreeSpaceW(ctypes.c_wchar_p(drive), ctypes.pointer(cluster_sectors), ctypes.pointer(sector_size), None, None) -- cgit v1.2.3 From 82f4d47d67476c2f1a4b089a7ec427717257fca6 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sun, 13 Oct 2013 16:09:47 +0200 Subject: Applied RaNaN tips --- pyload/utils/fs.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'pyload/utils/fs.py') diff --git a/pyload/utils/fs.py b/pyload/utils/fs.py index 56f76c490..05e098e2a 100644 --- a/pyload/utils/fs.py +++ b/pyload/utils/fs.py @@ -75,7 +75,8 @@ def free_space(folder): s = os.statvfs(folder) return s.f_frsize * s.f_bavail -def fs_bsize(path): +def get_bsize(path): + """ get optimal file system buffer size (in bytes) for i/o calls """ path = fs_encode(path) if os.name == "nt": -- cgit v1.2.3