summaryrefslogtreecommitdiffstats
path: root/rbutil/rbutilqt/base/utils.cpp
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2011-07-15 18:13:31 +0000
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2011-07-15 18:13:31 +0000
commit21a38713a685e04ab1533f487244f2dc2197e01c (patch)
treeaa397ae3fd081edd5225c9142fd35cbed4bb88c3 /rbutil/rbutilqt/base/utils.cpp
parentcad91ed938049037a57e9bcc4c5ad63e45dbc2e6 (diff)
downloadrockbox-21a38713a685e04ab1533f487244f2dc2197e01c.tar.gz
rockbox-21a38713a685e04ab1533f487244f2dc2197e01c.tar.bz2
rockbox-21a38713a685e04ab1533f487244f2dc2197e01c.zip
Show the total size of the volume along with the free space.
This should help identifying the correct player by size, since the free space is only useful to figure if there is enough space to install Rockbox. Change units to GiB since that is more useful given the size of current devices. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30139 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt/base/utils.cpp')
-rw-r--r--rbutil/rbutilqt/base/utils.cpp36
1 files changed, 31 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)
//! @return size in bytes
qulonglong Utils::filesystemFree(QString path)
{
+ return filesystemSize(path, FilesystemFree);
+}
+
+
+qulonglong Utils::filesystemTotal(QString path)
+{
+ return filesystemSize(path, FilesystemTotal);
+}
+
+
+qulonglong Utils::filesystemSize(QString path, enum Utils::Size type)
+{
qlonglong size = 0;
#if defined(Q_OS_LINUX) || defined(Q_OS_MACX)
// the usage of statfs() is deprecated by the LSB so use statvfs().
@@ -123,16 +135,30 @@ qulonglong Utils::filesystemFree(QString path)
ret = statvfs(qPrintable(path), &fs);
- if(ret == 0)
- size = (qulonglong)fs.f_frsize * (qulonglong)fs.f_bavail;
+ if(ret == 0) {
+ if(type == FilesystemFree) {
+ size = (qulonglong)fs.f_frsize * (qulonglong)fs.f_bavail;
+ }
+ if(type == FilesystemTotal) {
+ size = (qulonglong)fs.f_frsize * (qulonglong)fs.f_blocks;
+ }
+ }
#endif
#if defined(Q_OS_WIN32)
BOOL ret;
ULARGE_INTEGER freeAvailBytes;
+ ULARGE_INTEGER totalNumberBytes;
- ret = GetDiskFreeSpaceExW((LPCTSTR)path.utf16(), &freeAvailBytes, NULL, NULL);
- if(ret)
- size = freeAvailBytes.QuadPart;
+ ret = GetDiskFreeSpaceExW((LPCTSTR)path.utf16(), &freeAvailBytes,
+ &totalNumberBytes, NULL);
+ if(ret) {
+ if(type == FilesystemFree) {
+ size = freeAvailBytes.QuadPart;
+ }
+ if(type == FilesystemTotal) {
+ size = totalNumberBytes.QuadPart;
+ }
+ }
#endif
qDebug() << "[Utils] Filesystem free:" << path << size;
return size;