diff options
Diffstat (limited to 'rbutil/rbutilqt/base')
-rw-r--r-- | rbutil/rbutilqt/base/utils.cpp | 36 | ||||
-rw-r--r-- | rbutil/rbutilqt/base/utils.h | 7 |
2 files changed, 38 insertions, 5 deletions
diff --git a/rbutil/rbutilqt/base/utils.cpp b/rbutil/rbutilqt/base/utils.cpp index bd2bce0609..1a8607b8e2 100644 --- a/rbutil/rbutilqt/base/utils.cpp +++ b/rbutil/rbutilqt/base/utils.cpp | |||
@@ -115,6 +115,18 @@ QString Utils::resolvePathCase(QString path) | |||
115 | //! @return size in bytes | 115 | //! @return size in bytes |
116 | qulonglong Utils::filesystemFree(QString path) | 116 | qulonglong Utils::filesystemFree(QString path) |
117 | { | 117 | { |
118 | return filesystemSize(path, FilesystemFree); | ||
119 | } | ||
120 | |||
121 | |||
122 | qulonglong Utils::filesystemTotal(QString path) | ||
123 | { | ||
124 | return filesystemSize(path, FilesystemTotal); | ||
125 | } | ||
126 | |||
127 | |||
128 | qulonglong Utils::filesystemSize(QString path, enum Utils::Size type) | ||
129 | { | ||
118 | qlonglong size = 0; | 130 | qlonglong size = 0; |
119 | #if defined(Q_OS_LINUX) || defined(Q_OS_MACX) | 131 | #if defined(Q_OS_LINUX) || defined(Q_OS_MACX) |
120 | // the usage of statfs() is deprecated by the LSB so use statvfs(). | 132 | // the usage of statfs() is deprecated by the LSB so use statvfs(). |
@@ -123,16 +135,30 @@ qulonglong Utils::filesystemFree(QString path) | |||
123 | 135 | ||
124 | ret = statvfs(qPrintable(path), &fs); | 136 | ret = statvfs(qPrintable(path), &fs); |
125 | 137 | ||
126 | if(ret == 0) | 138 | if(ret == 0) { |
127 | size = (qulonglong)fs.f_frsize * (qulonglong)fs.f_bavail; | 139 | if(type == FilesystemFree) { |
140 | size = (qulonglong)fs.f_frsize * (qulonglong)fs.f_bavail; | ||
141 | } | ||
142 | if(type == FilesystemTotal) { | ||
143 | size = (qulonglong)fs.f_frsize * (qulonglong)fs.f_blocks; | ||
144 | } | ||
145 | } | ||
128 | #endif | 146 | #endif |
129 | #if defined(Q_OS_WIN32) | 147 | #if defined(Q_OS_WIN32) |
130 | BOOL ret; | 148 | BOOL ret; |
131 | ULARGE_INTEGER freeAvailBytes; | 149 | ULARGE_INTEGER freeAvailBytes; |
150 | ULARGE_INTEGER totalNumberBytes; | ||
132 | 151 | ||
133 | ret = GetDiskFreeSpaceExW((LPCTSTR)path.utf16(), &freeAvailBytes, NULL, NULL); | 152 | ret = GetDiskFreeSpaceExW((LPCTSTR)path.utf16(), &freeAvailBytes, |
134 | if(ret) | 153 | &totalNumberBytes, NULL); |
135 | size = freeAvailBytes.QuadPart; | 154 | if(ret) { |
155 | if(type == FilesystemFree) { | ||
156 | size = freeAvailBytes.QuadPart; | ||
157 | } | ||
158 | if(type == FilesystemTotal) { | ||
159 | size = totalNumberBytes.QuadPart; | ||
160 | } | ||
161 | } | ||
136 | #endif | 162 | #endif |
137 | qDebug() << "[Utils] Filesystem free:" << path << size; | 163 | qDebug() << "[Utils] Filesystem free:" << path << size; |
138 | return size; | 164 | return size; |
diff --git a/rbutil/rbutilqt/base/utils.h b/rbutil/rbutilqt/base/utils.h index ae02a2ca95..bff05cce0a 100644 --- a/rbutil/rbutilqt/base/utils.h +++ b/rbutil/rbutilqt/base/utils.h | |||
@@ -31,9 +31,16 @@ | |||
31 | class Utils : public QObject | 31 | class Utils : public QObject |
32 | { | 32 | { |
33 | public: | 33 | public: |
34 | enum Size { | ||
35 | FilesystemTotal, | ||
36 | FilesystemFree | ||
37 | }; | ||
38 | |||
34 | static bool recursiveRmdir(const QString &dirName); | 39 | static bool recursiveRmdir(const QString &dirName); |
35 | static QString resolvePathCase(QString path); | 40 | static QString resolvePathCase(QString path); |
36 | static qulonglong filesystemFree(QString path); | 41 | static qulonglong filesystemFree(QString path); |
42 | static qulonglong filesystemTotal(QString path); | ||
43 | static qulonglong filesystemSize(QString path, enum Size type); | ||
37 | static QString findExecutable(QString name); | 44 | static QString findExecutable(QString name); |
38 | static QString checkEnvironment(bool permission); | 45 | static QString checkEnvironment(bool permission); |
39 | static int compareVersionStrings(QString s1, QString s2); | 46 | static int compareVersionStrings(QString s1, QString s2); |