From e54f0a18d9d2cceb6107da07d707341d42bb73b7 Mon Sep 17 00:00:00 2001 From: David Sansome Date: Thu, 29 Jul 2010 22:58:23 +0000 Subject: [PATCH] Add an implementation of FileSystemCapacity and FileSystemFreeSpace for windows --- src/core/utilities.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index 9c5b88fad..cf79b5b89 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -17,9 +17,14 @@ #include "utilities.h" #include +#include #include -#include +#if defined(Q_OS_UNIX) +# include +#elif defined(Q_OS_WIN32) +# include +#endif namespace Utilities { @@ -75,17 +80,31 @@ QString PrettySize(quint64 bytes) { } quint64 FileSystemCapacity(const QString& path) { +#if defined(Q_OS_UNIX) struct statvfs fs_info; if (statvfs(path.toLocal8Bit().constData(), &fs_info) == 0) return fs_info.f_blocks * fs_info.f_bsize; +#elif defined(Q_OS_WIN32) + _ULARGE_INTEGER ret; + if (GetDiskFreeSpaceEx(QDir::toNativeSeparators(path).toLocal8Bit().constData(), + NULL, &ret, NULL) != 0) + return ret.QuadPart; +#endif return 0; } quint64 FileSystemFreeSpace(const QString& path) { +#if defined(Q_OS_UNIX) struct statvfs fs_info; if (statvfs(path.toLocal8Bit().constData(), &fs_info) == 0) return fs_info.f_bavail * fs_info.f_bsize; +#elif defined(Q_OS_WIN32) + _ULARGE_INTEGER ret; + if (GetDiskFreeSpaceEx(QDir::toNativeSeparators(path).toLocal8Bit().constData(), + &ret, NULL, NULL) != 0) + return ret.QuadPart; +#endif return 0; }