Files
MinecraftConsoles/include/lce_filesystem/lce_filesystem.cpp
GuglioIsStupid 38ce933fd5 voids request - Move the filesystem files to root/ as it will be used in both Minecraft.Client and Minecraft.World (#819)
* Move Filesystem to root/include/ as per devoiders request

* Filesystem -> lce_filesystem
2026-03-07 18:36:05 +07:00

74 lines
1.9 KiB
C++

#include "lce_filesystem.h"
#ifdef _WINDOWS64
#include <windows.h>
#endif // TODO: More os' filesystem handling for when the project moves away from only Windows
#include <stdio.h>
bool FileOrDirectoryExists(const char* path)
{
#ifdef _WINDOWS64
DWORD attribs = GetFileAttributesA(path);
return (attribs != INVALID_FILE_ATTRIBUTES);
#else
#error "FileOrDirectoryExists not implemented for this platform"
return false;
#endif
}
bool FileExists(const char* path)
{
#ifdef _WINDOWS64
DWORD attribs = GetFileAttributesA(path);
return (attribs != INVALID_FILE_ATTRIBUTES && !(attribs & FILE_ATTRIBUTE_DIRECTORY));
#else
#error "FileExists not implemented for this platform"
return false;
#endif
}
bool DirectoryExists(const char* path)
{
#ifdef _WINDOWS64
DWORD attribs = GetFileAttributesA(path);
return (attribs != INVALID_FILE_ATTRIBUTES && (attribs & FILE_ATTRIBUTE_DIRECTORY));
#else
#error "DirectoryExists not implemented for this platform"
return false;
#endif
}
bool GetFirstFileInDirectory(const char* directory, char* outFilePath, size_t outFilePathSize)
{
#ifdef _WINDOWS64
char searchPath[MAX_PATH];
snprintf(searchPath, MAX_PATH, "%s\\*", directory);
WIN32_FIND_DATAA findData;
HANDLE hFind = FindFirstFileA(searchPath, &findData);
if (hFind == INVALID_HANDLE_VALUE)
{
return false;
}
do
{
if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
// Found a file, copy its path to the output buffer
snprintf(outFilePath, outFilePathSize, "%s\\%s", directory, findData.cFileName);
FindClose(hFind);
return true;
}
} while (FindNextFileA(hFind, &findData) != 0);
FindClose(hFind);
return false; // No files found in the directory
#else
#error "GetFirstFileInDirectory not implemented for this platform"
return false;
#endif
}