JKSV/source/fs/directory_functions.cpp

37 lines
1.0 KiB
C++

#include "fs/directory_functions.hpp"
#include "fs/SaveMetaData.hpp"
uint64_t fs::get_directory_total_size(const fslib::Path &targetPath)
{
fslib::Directory targetDir{targetPath};
if (!targetDir) { return 0; }
const int64_t itemCount = targetDir.get_count();
uint64_t directorySize = 0;
for (int64_t i = 0; i < itemCount; i++)
{
if (targetDir.is_directory(i))
{
fslib::Path newTarget = targetPath / targetDir[i];
directorySize += get_directory_total_size(newTarget);
}
else { directorySize += targetDir.get_entry_size(i); }
}
return directorySize;
}
bool fs::directory_has_contents(const fslib::Path &directoryPath)
{
fslib::Directory testDir{directoryPath};
if (!testDir) { return false; }
// We don't want the save meta to throw this off.
const int64_t itemCount = testDir.get_count();
for (int64_t i = 0; i < itemCount; i++)
{
if (testDir[i] != fs::NAME_SAVE_META) { return true; }
}
return false;
}