2
0
mirror of https://github.com/FWGS/xash3d-fwgs synced 2024-11-22 01:45:19 +01:00

filesystem: allow acquiring C interface through CreateInterface export

This commit is contained in:
Alibek Omarov 2022-08-25 20:33:16 +03:00
parent 9d49985100
commit fce8afabfb
4 changed files with 15 additions and 1 deletions

View File

@ -492,6 +492,18 @@ extern "C" void EXPORT *CreateInterface( const char *interface, int *retval )
return &g_VFileSystem009;
}
if( !Q_strcmp( interface, FS_API_CREATEINTERFACE_TAG ))
{
// return a copy, to disallow overriding
static fs_api_t copy = { 0 };
if( !copy.InitStdio )
memcpy( &copy, &g_api, sizeof( copy ));
if( retval ) *retval = 0;
return ©
}
if( retval ) *retval = 1;
return NULL;
}

View File

@ -2868,7 +2868,7 @@ static qboolean FS_InitInterface( int version, fs_interface_t *engfuncs )
return true;
}
static fs_api_t g_api =
fs_api_t g_api =
{
FS_InitStdio,
FS_ShutdownStdio,

View File

@ -29,6 +29,7 @@ extern "C"
#endif // __cplusplus
#define FS_API_VERSION 1 // not stable yet!
#define FS_API_CREATEINTERFACE_TAG "XashFileSystem001" // follow FS_API_VERSION!!!
// search path flags
enum

View File

@ -86,6 +86,7 @@ extern qboolean fs_ext_path;
extern char fs_rodir[MAX_SYSPATH];
extern char fs_rootdir[MAX_SYSPATH];
extern char fs_writedir[MAX_SYSPATH];
extern fs_api_t g_api;
#define GI FI.GameInfo