mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
Removed **Sys_LoadDll** (unused)
This commit is contained in:
parent
c180514a72
commit
dba6b82df8
1 changed files with 0 additions and 119 deletions
|
@ -1053,125 +1053,6 @@ void* Sys_GetCGameAPI(void* parms)
|
||||||
return GetCGameAPI(parms);
|
return GetCGameAPI(parms);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
=================
|
|
||||||
Sys_LoadDll
|
|
||||||
|
|
||||||
Used to load a development dll instead of a virtual machine
|
|
||||||
TTimo:
|
|
||||||
changed the load procedure to match VFS logic, and allow developer use
|
|
||||||
#1 look down current path
|
|
||||||
#2 look in fs_homepath
|
|
||||||
#3 look in fs_basepath
|
|
||||||
=================
|
|
||||||
*/
|
|
||||||
extern char *FS_BuildOSPath( const char *base, const char *game, const char *qpath );
|
|
||||||
|
|
||||||
void *Sys_LoadDll( const char *name, char *fqpath ,
|
|
||||||
int (**entryPoint)(int, ...),
|
|
||||||
int (*systemcalls)(int, ...) )
|
|
||||||
{
|
|
||||||
void *libHandle;
|
|
||||||
void (*dllEntry)( int (*syscallptr)(int, ...) );
|
|
||||||
char curpath[MAX_OSPATH];
|
|
||||||
char fname[MAX_OSPATH];
|
|
||||||
char *basepath;
|
|
||||||
char *homepath;
|
|
||||||
char *pwdpath;
|
|
||||||
char *gamedir;
|
|
||||||
char *fn;
|
|
||||||
const char* err = NULL;
|
|
||||||
|
|
||||||
*fqpath = 0;
|
|
||||||
|
|
||||||
// bk001206 - let's have some paranoia
|
|
||||||
assert( name );
|
|
||||||
|
|
||||||
getcwd(curpath, sizeof(curpath));
|
|
||||||
#if defined __i386__
|
|
||||||
snprintf (fname, sizeof(fname), "%si386.so", name);
|
|
||||||
#elif defined __powerpc__ //rcg010207 - PPC support.
|
|
||||||
snprintf (fname, sizeof(fname), "%sppc.so", name);
|
|
||||||
#elif defined __axp__
|
|
||||||
snprintf (fname, sizeof(fname), "%saxp.so", name);
|
|
||||||
#elif defined __mips__
|
|
||||||
snprintf (fname, sizeof(fname), "%smips.so", name);
|
|
||||||
#elif defined __x86_64__
|
|
||||||
snprintf(fname, sizeof(fname), "%sx86_64.so", name);
|
|
||||||
#elif defined __arm__
|
|
||||||
snprintf(fname, sizeof(fname), "%sarm.so", name);
|
|
||||||
#elif defined __arm64__
|
|
||||||
snprintf(fname, sizeof(fname), "%sarm64.so", name);
|
|
||||||
#error Unknown arch
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// bk001129 - was RTLD_LAZY
|
|
||||||
#define Q_RTLD RTLD_NOW
|
|
||||||
|
|
||||||
pwdpath = Sys_Cwd();
|
|
||||||
basepath = Cvar_VariableString( "fs_basepath" );
|
|
||||||
homepath = Cvar_VariableString( "fs_homepath" );
|
|
||||||
gamedir = Cvar_VariableString( "fs_game" );
|
|
||||||
|
|
||||||
// pwdpath
|
|
||||||
fn = FS_BuildOSPath( pwdpath, gamedir, fname );
|
|
||||||
Com_Printf( "Sys_LoadDll(%s)... \n", fn );
|
|
||||||
libHandle = dlopen( fn, Q_RTLD );
|
|
||||||
|
|
||||||
if ( !libHandle )
|
|
||||||
{
|
|
||||||
Com_Printf( "Sys_LoadDll(%s) failed:\n\"%s\"\n", fn, dlerror() );
|
|
||||||
// fs_homepath
|
|
||||||
fn = FS_BuildOSPath( homepath, gamedir, fname );
|
|
||||||
Com_Printf( "Sys_LoadDll(%s)... \n", fn );
|
|
||||||
libHandle = dlopen( fn, Q_RTLD );
|
|
||||||
|
|
||||||
if ( !libHandle )
|
|
||||||
{
|
|
||||||
Com_Printf( "Sys_LoadDll(%s) failed:\n\"%s\"\n", fn, dlerror() );
|
|
||||||
// fs_basepath
|
|
||||||
fn = FS_BuildOSPath( basepath, gamedir, fname );
|
|
||||||
Com_Printf( "Sys_LoadDll(%s)... \n", fn );
|
|
||||||
libHandle = dlopen( fn, Q_RTLD );
|
|
||||||
|
|
||||||
if ( !libHandle )
|
|
||||||
{
|
|
||||||
#ifndef NDEBUG // bk001206 - in debug abort on failure
|
|
||||||
Com_Error ( ERR_FATAL, "Sys_LoadDll(%s) failed dlopen() completely!\n", name );
|
|
||||||
#else
|
|
||||||
Com_Printf ( "Sys_LoadDll(%s) failed dlopen() completely!\n", name );
|
|
||||||
#endif
|
|
||||||
return NULL;
|
|
||||||
} else
|
|
||||||
Com_Printf ( "Sys_LoadDll(%s): succeeded ...\n", fn );
|
|
||||||
} else
|
|
||||||
Com_Printf ( "Sys_LoadDll(%s): succeeded ...\n", fn );
|
|
||||||
} else
|
|
||||||
Com_Printf ( "Sys_LoadDll(%s): succeeded ...\n", fn );
|
|
||||||
|
|
||||||
dllEntry = dlsym( libHandle, "dllEntry" );
|
|
||||||
*entryPoint = dlsym( libHandle, "vmMain" );
|
|
||||||
if ( !*entryPoint || !dllEntry )
|
|
||||||
{
|
|
||||||
err = dlerror();
|
|
||||||
#ifndef NDEBUG // bk001206 - in debug abort on failure
|
|
||||||
Com_Error ( ERR_FATAL, "Sys_LoadDll(%s) failed dlsym(vmMain):\n\"%s\" !\n", name, err );
|
|
||||||
#else
|
|
||||||
Com_Printf ( "Sys_LoadDll(%s) failed dlsym(vmMain):\n\"%s\" !\n", name, err );
|
|
||||||
#endif
|
|
||||||
dlclose( libHandle );
|
|
||||||
err = dlerror();
|
|
||||||
if ( err != NULL )
|
|
||||||
Com_Printf ( "Sys_LoadDll(%s) failed dlcose:\n\"%s\"\n", name, err );
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
Com_Printf ( "Sys_LoadDll(%s) found **vmMain** at %p \n", name, *entryPoint ); // bk001212
|
|
||||||
dllEntry( systemcalls );
|
|
||||||
Com_Printf ( "Sys_LoadDll(%s) succeeded!\n", name );
|
|
||||||
if ( libHandle ) Q_strncpyz ( fqpath , fn , MAX_QPATH ) ; // added 7/20/02 by T.Ray
|
|
||||||
return libHandle;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
========================================================================
|
========================================================================
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue