Add partition space information to File class

Add File::totalSpaceImpl(), File::usableSpaceImpl() and File::freeSpaceImpl() to retrieve total, available and usable space in the filesystem for the specified path.
This commit is contained in:
Tobias Taschner
2016-01-21 23:55:43 +01:00
committed by Tobias Taschner
parent 59b5b4e46e
commit 9972496811
16 changed files with 290 additions and 0 deletions

View File

@@ -348,6 +348,39 @@ bool FileImpl::createDirectoryImpl()
}
FileImpl::FileSizeImpl FileImpl::totalSpaceImpl() const
{
poco_assert(!_path.empty());
ULARGE_INTEGER space;
if (!GetDiskFreeSpaceExW(_upath.c_str(), NULL, &space, NULL))
handleLastErrorImpl(_path);
return space.QuadPart;
}
FileImpl::FileSizeImpl FileImpl::usableSpaceImpl() const
{
poco_assert(!_path.empty());
ULARGE_INTEGER space;
if (!GetDiskFreeSpaceExW(_upath.c_str(), &space, NULL, NULL))
handleLastErrorImpl(_path);
return space.QuadPart;
}
FileImpl::FileSizeImpl FileImpl::freeSpaceImpl() const
{
poco_assert(!_path.empty());
ULARGE_INTEGER space;
if (!GetDiskFreeSpaceExW(_upath.c_str(), NULL, NULL, &space))
handleLastErrorImpl(_path);
return space.QuadPart;
}
void FileImpl::handleLastErrorImpl(const std::string& path)
{
switch (GetLastError())