mirror of
https://github.com/ioquake/ioq3.git
synced 2025-05-31 00:51:17 +00:00
158 lines
2.8 KiB
C
158 lines
2.8 KiB
C
#include "../qcommon/q_shared.h"
|
|
#include "../renderercommon/tr_public.h"
|
|
|
|
extern refexport_t* R_Export(void);
|
|
|
|
refimport_t ri;
|
|
|
|
|
|
/*
|
|
@@@@@@@@@@@@@@@@@@@@@
|
|
GetRefAPI
|
|
|
|
@@@@@@@@@@@@@@@@@@@@@
|
|
*/
|
|
|
|
#ifdef USE_RENDERER_DLOPEN
|
|
Q_EXPORT refexport_t* QDECL GetRefAPI( int apiVersion, refimport_t *rimp )
|
|
{
|
|
#else
|
|
refexport_t* GetRefAPI(int apiVersion, refimport_t *rimp)
|
|
{
|
|
#endif
|
|
|
|
ri = *rimp;
|
|
|
|
if( apiVersion != REF_API_VERSION )
|
|
{
|
|
ri.Printf(PRINT_ALL, "Mismatched REF_API_VERSION: expected %i, got %i\n", REF_API_VERSION, apiVersion );
|
|
return NULL;
|
|
}
|
|
|
|
return R_Export();
|
|
}
|
|
|
|
//
|
|
// common function replacements for modular renderer
|
|
//
|
|
#ifdef USE_RENDERER_DLOPEN
|
|
|
|
void QDECL Com_Printf( const char *msg, ... )
|
|
{
|
|
va_list argptr;
|
|
char text[1024];
|
|
|
|
va_start(argptr, msg);
|
|
Q_vsnprintf(text, sizeof(text), msg, argptr);
|
|
va_end(argptr);
|
|
|
|
ri.Printf(PRINT_ALL, "%s", text);
|
|
}
|
|
|
|
void QDECL Com_Error( int level, const char *error, ... )
|
|
{
|
|
va_list argptr;
|
|
char text[1024];
|
|
|
|
va_start(argptr, error);
|
|
Q_vsnprintf(text, sizeof(text), error, argptr);
|
|
va_end(argptr);
|
|
|
|
ri.Error(level, "%s", text);
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
// =======================================
|
|
// =======================================
|
|
// =======================================
|
|
|
|
char* R_SkipPath (char *pathname)
|
|
{
|
|
char* last = pathname;
|
|
while (*pathname)
|
|
{
|
|
if (*pathname=='/')
|
|
last = pathname+1;
|
|
pathname++;
|
|
}
|
|
return last;
|
|
}
|
|
|
|
/*
|
|
char* SkipPath(char *pathname)
|
|
{
|
|
char* last = pathname;
|
|
char c;
|
|
do{
|
|
c = *pathname;
|
|
if (c == '/')
|
|
last = pathname+1;
|
|
pathname++;
|
|
}while(c);
|
|
|
|
return last;
|
|
}
|
|
*/
|
|
|
|
void R_StripExtension( const char *in, char *out, int destsize )
|
|
{
|
|
const char *dot = strrchr(in, '.'), *slash;
|
|
|
|
if (dot && (!(slash = strrchr(in, '/')) || slash < dot))
|
|
destsize = (destsize < dot-in+1 ? destsize : dot-in+1);
|
|
|
|
if ( in == out && destsize > 1 )
|
|
out[destsize-1] = '\0';
|
|
else
|
|
Q_strncpyz(out, in, destsize);
|
|
}
|
|
|
|
|
|
/*
|
|
void stripExtension(const char *in, char *out, int destsize)
|
|
{
|
|
const char *dot = strrchr(in, '.');
|
|
const char *slash = strrchr(in, '/');
|
|
|
|
|
|
if ((dot != NULL) && ( (slash == NULL) || (slash < dot) ) )
|
|
{
|
|
int len = dot-in+1;
|
|
if(len <= destsize)
|
|
destsize = len;
|
|
else
|
|
ri.Printf( PRINT_WARNING, "stripExtension: dest size not enough!\n");
|
|
}
|
|
|
|
if(in != out)
|
|
strncpy(out, in, destsize-1);
|
|
|
|
out[destsize-1] = '\0';
|
|
}
|
|
|
|
|
|
|
|
const char *R_GetExtension( const char *name )
|
|
{
|
|
const char *dot = strrchr(name, '.'), *slash;
|
|
if (dot && (!(slash = strrchr(name, '/')) || slash < dot))
|
|
return dot + 1;
|
|
else
|
|
return "";
|
|
}
|
|
*/
|
|
|
|
/*
|
|
char* GetExtension( const char *name )
|
|
{
|
|
char* dot = strrchr(name, '.');
|
|
char* slash = strrchr(name, '/');
|
|
|
|
if ((dot != NULL) && ((slash == NULL) || (slash < dot) ))
|
|
return dot + 1;
|
|
else
|
|
return "";
|
|
}
|
|
*/
|