diff --git a/BeefLibs/corlib/src/IO/FileStream.bf b/BeefLibs/corlib/src/IO/FileStream.bf index 6ffd0e44..36b5daa0 100644 --- a/BeefLibs/corlib/src/IO/FileStream.bf +++ b/BeefLibs/corlib/src/IO/FileStream.bf @@ -29,6 +29,16 @@ namespace System.IO } } + public int Handle + { + get + { + if (mBfpFile == null) + return 0; + return Platform.BfpFile_GetSystemHandle(mBfpFile); + } + } + public ~this() { Delete(); @@ -233,6 +243,16 @@ namespace System.IO protected int64 mBfpFilePos; FileAccess mFileAccess; + public int Handle + { + get + { + if (mBfpFile == null) + return 0; + return Platform.BfpFile_GetSystemHandle(mBfpFile); + } + } + public this() { diff --git a/BeefLibs/corlib/src/Platform.bf b/BeefLibs/corlib/src/Platform.bf index 07ed3209..8e518186 100644 --- a/BeefLibs/corlib/src/Platform.bf +++ b/BeefLibs/corlib/src/Platform.bf @@ -337,6 +337,8 @@ namespace System [CallingConvention(.Stdcall), CLink] public static extern BfpFile* BfpFile_GetStd(BfpFileStdKind kind, BfpFileResult* outResult); [CallingConvention(.Stdcall), CLink] + public static extern int BfpFile_GetSystemHandle(BfpFile* file); + [CallingConvention(.Stdcall), CLink] public static extern void BfpFile_Release(BfpFile* file); [CallingConvention(.Stdcall), CLink] public static extern int BfpFile_Write(BfpFile* file, void* buffer, int size, int timeoutMS, BfpFileResult* outResult); diff --git a/BeefySysLib/platform/PlatformInterface.h b/BeefySysLib/platform/PlatformInterface.h index 97af79ea..aa6fc380 100644 --- a/BeefySysLib/platform/PlatformInterface.h +++ b/BeefySysLib/platform/PlatformInterface.h @@ -413,6 +413,7 @@ enum BfpFileStdKind BFP_EXPORT BfpFile* BFP_CALLTYPE BfpFile_Create(const char* name, BfpFileCreateKind createKind, BfpFileCreateFlags createFlags, BfpFileAttributes createdFileAttr, BfpFileResult* outResult); BFP_EXPORT BfpFile* BFP_CALLTYPE BfpFile_GetStd(BfpFileStdKind kind, BfpFileResult* outResult); +BFP_EXPORT intptr BFP_CALLTYPE BfpFile_GetSystemHandle(BfpFile* file); BFP_EXPORT void BFP_CALLTYPE BfpFile_Release(BfpFile* file); BFP_EXPORT void BFP_CALLTYPE BfpFile_Close(BfpFile* file, BfpFileResult* outResult); BFP_EXPORT intptr BFP_CALLTYPE BfpFile_Write(BfpFile* file, const void* buffer, intptr size, int timeoutMS, BfpFileResult* outResult); diff --git a/BeefySysLib/platform/posix/PosixCommon.cpp b/BeefySysLib/platform/posix/PosixCommon.cpp index 75b53f72..426e502e 100644 --- a/BeefySysLib/platform/posix/PosixCommon.cpp +++ b/BeefySysLib/platform/posix/PosixCommon.cpp @@ -1941,6 +1941,11 @@ BFP_EXPORT BfpFile* BFP_CALLTYPE BfpFile_GetStd(BfpFileStdKind kind, BfpFileResu return bfpFile; } +BFP_EXPORT intptr BFP_CALLTYPE BfpFile_GetSystemHandle(BfpFile* file) +{ + return (intptr)file->mHandle; +} + BFP_EXPORT void BFP_CALLTYPE BfpFile_Release(BfpFile* file) { if ((file->mHandle != -1) && (!file->mIsStd)) diff --git a/BeefySysLib/platform/win/Platform.cpp b/BeefySysLib/platform/win/Platform.cpp index 7b985e02..81aebe2c 100644 --- a/BeefySysLib/platform/win/Platform.cpp +++ b/BeefySysLib/platform/win/Platform.cpp @@ -2824,6 +2824,11 @@ BFP_EXPORT BfpFile* BFP_CALLTYPE BfpFile_GetStd(BfpFileStdKind kind, BfpFileResu return bfpFile; } +BFP_EXPORT intptr BFP_CALLTYPE BfpFile_GetSystemHandle(BfpFile* file) +{ + return (intptr)file->mHandle; +} + BFP_EXPORT void BFP_CALLTYPE BfpFile_Release(BfpFile* file) { if ((file->mHandle != INVALID_HANDLE_VALUE) && (!file->mIsStd))