diff --git a/BeefLibs/corlib/src/IO/Directory.bf b/BeefLibs/corlib/src/IO/Directory.bf index eb2d27ef..0966b08d 100644 --- a/BeefLibs/corlib/src/IO/Directory.bf +++ b/BeefLibs/corlib/src/IO/Directory.bf @@ -229,6 +229,11 @@ namespace System.IO return DateTime.FromFileTimeUtc((int64)Platform.BfpFindFileData_GetTime_Access(mFindFileData)); } + public int64 GetFileSize() + { + return Platform.BfpFindFileData_GetFileSize(mFindFileData); + } + public Platform.BfpFileAttributes GetFileAttributes() { return Platform.BfpFindFileData_GetFileAttributes(mFindFileData); diff --git a/BeefLibs/corlib/src/Platform.bf b/BeefLibs/corlib/src/Platform.bf index 443e6604..0e983ec6 100644 --- a/BeefLibs/corlib/src/Platform.bf +++ b/BeefLibs/corlib/src/Platform.bf @@ -393,6 +393,8 @@ namespace System [CallingConvention(.Stdcall), CLink] public static extern BfpFileAttributes BfpFindFileData_GetFileAttributes(BfpFindFileData* findData); [CallingConvention(.Stdcall), CLink] + public static extern int64 BfpFindFileData_GetFileSize(BfpFindFileData* findData); + [CallingConvention(.Stdcall), CLink] public static extern void BfpFindFileData_Release(BfpFindFileData* findData); public enum BfpSysDirectoryKind : int32 diff --git a/BeefySysLib/platform/PlatformInterface.h b/BeefySysLib/platform/PlatformInterface.h index a2591ed6..3a209512 100644 --- a/BeefySysLib/platform/PlatformInterface.h +++ b/BeefySysLib/platform/PlatformInterface.h @@ -465,6 +465,7 @@ BFP_EXPORT BfpTimeStamp BFP_CALLTYPE BfpFindFileData_GetTime_LastWrite(BfpFindFi BFP_EXPORT BfpTimeStamp BFP_CALLTYPE BfpFindFileData_GetTime_Created(BfpFindFileData* findData); BFP_EXPORT BfpTimeStamp BFP_CALLTYPE BfpFindFileData_GetTime_Access(BfpFindFileData* findData); BFP_EXPORT BfpFileAttributes BFP_CALLTYPE BfpFindFileData_GetFileAttributes(BfpFindFileData* findData); +BFP_EXPORT int64 BFP_CALLTYPE BfpFindFileData_GetFileSize(BfpFindFileData* findData); BFP_EXPORT void BFP_CALLTYPE BfpFindFileData_Release(BfpFindFileData* findData); BFP_EXPORT int BFP_CALLTYPE BfpStack_CaptureBackTrace(int framesToSkip, intptr* outFrames, int wantFrameCount); diff --git a/BeefySysLib/platform/posix/PosixCommon.cpp b/BeefySysLib/platform/posix/PosixCommon.cpp index d6423ba6..82d67553 100644 --- a/BeefySysLib/platform/posix/PosixCommon.cpp +++ b/BeefySysLib/platform/posix/PosixCommon.cpp @@ -2412,6 +2412,11 @@ BFP_EXPORT BfpFileAttributes BFP_CALLTYPE BfpFindFileData_GetFileAttributes(BfpF return flags; } +BFP_EXPORT int64 BFP_CALLTYPE BfpFindFileData_GetFileSize(BfpFindFileData* findData) +{ + return (int64)findData->mStat.st_size; +} + BFP_EXPORT void BFP_CALLTYPE BfpFindFileData_Release(BfpFindFileData* findData) { delete findData; diff --git a/BeefySysLib/platform/win/Platform.cpp b/BeefySysLib/platform/win/Platform.cpp index cf434429..9296987b 100644 --- a/BeefySysLib/platform/win/Platform.cpp +++ b/BeefySysLib/platform/win/Platform.cpp @@ -3414,6 +3414,11 @@ BFP_EXPORT BfpFileAttributes BFP_CALLTYPE BfpFindFileData_GetFileAttributes(BfpF return FileAttributes_WinToBFP(findData->mFindData.dwFileAttributes); } +BFP_EXPORT int64 BFP_CALLTYPE BfpFindFileData_GetFileSize(BfpFindFileData* findData) +{ + return ((int64)findData->mFindData.nFileSizeHigh << 32) | (int64)findData->mFindData.nFileSizeLow; +} + BFP_EXPORT void BFP_CALLTYPE BfpFindFileData_Release(BfpFindFileData* findData) { ::FindClose(findData->mHandle);