0
0
Fork 0
mirror of https://github.com/UberGames/RPG-X2.git synced 2025-03-10 18:21:42 +00:00

Merge branch 'master' of git://github.com/UberGames/RPG-X2.git

This commit is contained in:
Harry Young 2011-12-05 17:13:11 +01:00
commit 61947264f6
5 changed files with 257 additions and 142 deletions

View file

@ -2663,8 +2663,8 @@ void CG_NewClientInfo( int clientNum ) {
clientInfo_t newInfo; clientInfo_t newInfo;
const char *configstring; const char *configstring;
const char *v; const char *v;
char *model; char *model = NULL;
char *skin; char *skin = NULL;
size_t len; size_t len;
//int i; //int i;

View file

@ -482,6 +482,8 @@ static void CG_EncodeIDFile( void )
char strSubnet[3]; char strSubnet[3];
int intSubnet[4]; int intSubnet[4];
int i, j; int i, j;
memset(strSubnet, 0, sizeof(strSubnet));
IP = (char *)CG_Argv( 1 ); IP = (char *)CG_Argv( 1 );
//IP = "143.163.12.2"; //IP = "143.163.12.2";
@ -632,6 +634,8 @@ void CG_ShaderStateChanged(void) {
o = CG_ConfigString( CS_SHADERSTATE ); o = CG_ConfigString( CS_SHADERSTATE );
if(!o) return;
while (o && *o) { while (o && *o) {
n = strstr(o, "="); n = strstr(o, "=");
if (n && *n) { if (n && *n) {

View file

@ -1,6 +1,8 @@
// Copyright (C) 1999-2000 Id Software, Inc. /*
// * Copyright (C) 1999-2000 Id Software, Inc.
// q_math.c -- stateless support routines that are included in each code module *
* q_math.c -- stateless support routines that are included in each code module
*/
#include "q_shared.h" #include "q_shared.h"
int nonansicast = 0; int nonansicast = 0;
@ -11,66 +13,66 @@ vec3_t axisDefault[3] = { { 1, 0, 0 }, { 0, 1, 0 }, { 0, 0, 1 } };
vec4_t colorTable[CT_MAX] = vec4_t colorTable[CT_MAX] =
{ {
{0, 0, 0, 0}, // CT_NONE {0, 0, 0, 0}, /* CT_NONE */
{0, 0, 0, 1}, // CT_BLACK {0, 0, 0, 1}, /* CT_BLACK */
{1, 0, 0, 1}, // CT_RED {1, 0, 0, 1}, /* CT_RED */
{0, 1, 0, 1}, // CT_GREEN {0, 1, 0, 1}, /* CT_GREEN */
{0, 0, 1, 1}, // CT_BLUE {0, 0, 1, 1}, /* CT_BLUE */
{1, 1, 0, 1}, // CT_YELLOW {1, 1, 0, 1}, /* CT_YELLOW */
{1, 0, 1, 1}, // CT_MAGENTA {1, 0, 1, 1}, /* CT_MAGENTA */
{0, 1, 1, 1}, // CT_CYAN {0, 1, 1, 1}, /* CT_CYAN */
{0.071, 0.271, 0.29, 1},// CT_TEAL {0.071, 0.271, 0.29, 1}, /* CT_TEAL */
{0.529, 0.373, 0.017, 1},//CT_GOLD {0.529, 0.373, 0.017, 1},/* CT_GOLD */
{1, 1, 1, 1}, // CT_WHITE {1, 1, 1, 1}, /* CT_WHITE */
{0.75, 0.75, 0.75, 1}, // CT_LTGREY {0.75, 0.75, 0.75, 1}, /* CT_LTGREY */
{0.50, 0.50, 0.50, 1}, // CT_MDGREY {0.50, 0.50, 0.50, 1}, /* CT_MDGREY */
{0.25, 0.25, 0.25, 1}, // CT_DKGREY {0.25, 0.25, 0.25, 1}, /* CT_DKGREY */
{0.15, 0.15, 0.15, 1}, // CT_DKGREY2 {0.15, 0.15, 0.15, 1}, /* CT_DKGREY2 */
{0.688, 0.797, 1, 1}, /* CT_VLTORANGE -- needs values */
{0.688, 0.797, 1, 1}, /* CT_LTORANGE */
{0.620, 0.710, 0.894, 1},/* CT_DKORANGE */
{0.463, 0.525, 0.671, 1},/* CT_VDKORANGE */
{0.616, 0.718, 0.898, 1},/* CT_VLTBLUE1 */
{0.286, 0.506, 0.898, 1},/* CT_LTBLUE1 */
{0.082, 0.388, 0.898, 1},/* CT_DKBLUE1 */
{0.063, 0.278, 0.514, 1},/* CT_VDKBLUE1 */
{0.688, 0.797, 1, 1}, // CT_VLTORANGE -- needs values {0.302, 0.380, 0.612, 1},/* CT_VLTBLUE2 -- needs values */
{0.688, 0.797, 1, 1}, // CT_LTORANGE {0.196, 0.314, 0.612, 1},/* CT_LTBLUE2 */
{0.620, 0.710, 0.894, 1}, // CT_DKORANGE {0.060, 0.227, 0.611, 1},/* CT_DKBLUE2 */
{0.463, 0.525, 0.671, 1}, // CT_VDKORANGE {0.043, 0.161, 0.459, 1},/* CT_VDKBLUE2 */
{0.616, 0.718, 0.898, 1}, // CT_VLTBLUE1 {0.082, 0.388, 0.898, 1},/* CT_VLTBROWN1 -- needs values */
{0.286, 0.506, 0.898, 1}, // CT_LTBLUE1 {0.082, 0.388, 0.898, 1},/* CT_LTBROWN1 */
{0.082, 0.388, 0.898, 1}, // CT_DKBLUE1 {0.078, 0.320, 0.813, 1},/* CT_DKBROWN1 */
{0.063, 0.278, 0.514, 1}, // CT_VDKBLUE1 {0.060, 0.227, 0.611, 1},/* CT_VDKBROWN1 */
{0.302, 0.380, 0.612, 1}, // CT_VLTBLUE2 -- needs values {1, 0.784, 0.365, 1}, /* CT_VLTGOLD1 -- needs values */
{0.196, 0.314, 0.612, 1}, // CT_LTBLUE2 {1, 0.706, 0.153, 1}, /* CT_LTGOLD1 */
{0.060, 0.227, 0.611, 1}, // CT_DKBLUE2 {0.733, 0.514, 0.086, 1},/* CT_DKGOLD1 */
{0.043, 0.161, 0.459, 1}, // CT_VDKBLUE2 {0.549, 0.384, 0.063, 1},/* CT_VDKGOLD1 */
{0.082, 0.388, 0.898, 1}, // CT_VLTBROWN1 -- needs values {0.688, 0.797, 1, 1}, /* CT_VLTPURPLE1 -- needs values */
{0.082, 0.388, 0.898, 1}, // CT_LTBROWN1 {0.688, 0.797, 1, 1}, /* CT_LTPURPLE1 */
{0.078, 0.320, 0.813, 1}, // CT_DKBROWN1 {0.313, 0.578, 1, 1}, /* CT_DKPURPLE1 */
{0.060, 0.227, 0.611, 1}, // CT_VDKBROWN1 {0.031, 0.110, 0.341, 1},/* CT_VDKPURPLE1 */
{1, 0.784, 0.365, 1}, // CT_VLTGOLD1 -- needs values {0.688, 0.797, 1, 1}, /* CT_VLTPURPLE2 -- needs values */
{1, 0.706, 0.153, 1}, // CT_LTGOLD1 {0.688, 0.797, 1, 1}, /* CT_LTPURPLE2 */
{0.733, 0.514, 0.086, 1}, // CT_DKGOLD1 {0.688, 0.797, 1, 1}, /* CT_DKPURPLE2 */
{0.549, 0.384, 0.063, 1}, // CT_VDKGOLD1 {0.031, 0.110, 0.341, 1},/* CT_VDKPURPLE2 */
{0.688, 0.797, 1, 1}, // CT_VLTPURPLE1 -- needs values {0.686, 0.808, 0.1, 1}, /* CT_VLTPURPLE3 */
{0.688, 0.797, 1, 1}, // CT_LTPURPLE1 {0.188, 0.494, 1, 1}, /* CT_LTPURPLE3 */
{0.313, 0.578, 1, 1}, // CT_DKPURPLE1 {0.094, 0.471, 1, 1}, /* CT_DKPURPLE3 */
{0.031, 0.110, 0.341, 1}, // CT_VDKPURPLE1 {0.067, 0.325, 0.749, 1},/* CT_VDKPURPLE3 */
{0.688, 0.797, 1, 1}, // CT_VLTPURPLE2 -- needs values {1, 0.612, 0.325, 1}, /* CT_VLTRED1 */
{0.688, 0.797, 1, 1}, // CT_LTPURPLE2 {1, 0.478, 0.098, 1}, /* CT_LTRED1 */
{0.688, 0.797, 1, 1}, // CT_DKPURPLE2 {1, 0.438, 0, 1}, /* CT_DKRED1 */
{0.031, 0.110, 0.341, 1}, // CT_VDKPURPLE2 {0.784, 0.329, 0, 1}, /* CT_VDKRED1 */
{0.686, 0.808, 0.1, 1}, // CT_VLTPURPLE3
{0.188, 0.494, 1, 1}, // CT_LTPURPLE3
{0.094, 0.471, 1, 1}, // CT_DKPURPLE3
{0.067, 0.325, 0.749, 1}, // CT_VDKPURPLE3
{1, 0.612, 0.325, 1}, // CT_VLTRED1
{1, 0.478, 0.098, 1}, // CT_LTRED1
{1, 0.438, 0, 1}, // CT_DKRED1
{0.784, 0.329, 0, 1}, // CT_VDKRED1
}; };
@ -184,7 +186,7 @@ vec3_t bytedirs[NUMVERTEXNORMALS] =
{-0.587785, -0.425325, -0.688191}, {-0.688191, -0.587785, -0.425325} {-0.587785, -0.425325, -0.688191}, {-0.688191, -0.587785, -0.425325}
}; };
//============================================================== /*==============================================================*/
int Q_rand( int *seed ) { int Q_rand( int *seed ) {
*seed = (69069 * *seed + 1); *seed = (69069 * *seed + 1);
@ -200,7 +202,7 @@ float Q_crandom( int *seed ) {
} }
//======================================================= /*=======================================================*/
signed char ClampChar( int i ) { signed char ClampChar( int i ) {
if ( i < -128 ) { if ( i < -128 ) {
@ -223,7 +225,7 @@ signed short ClampShort( int i ) {
} }
// this isn't a real cheap function to call! /* this isn't a real cheap function to call! */
/** /**
* Converts a direction vector into a byte * Converts a direction vector into a byte
*/ */
@ -305,7 +307,7 @@ float NormalizeColor( const vec3_t in, vec3_t out ) {
} }
//============================================================================ /*============================================================================*/
/* /*
* \brief Returns false if the triangle is degenrate. * \brief Returns false if the triangle is degenrate.
@ -396,10 +398,10 @@ RotateAroundDirection
*/ */
void RotateAroundDirection( vec3_t axis[3], float yaw ) { void RotateAroundDirection( vec3_t axis[3], float yaw ) {
// create an arbitrary axis[1] /* create an arbitrary axis[1] */
PerpendicularVector( axis[1], axis[0] ); PerpendicularVector( axis[1], axis[0] );
// rotate it around axis[0] by yaw /* rotate it around axis[0] by yaw */
if ( yaw ) { if ( yaw ) {
vec3_t temp; vec3_t temp;
@ -407,7 +409,7 @@ void RotateAroundDirection( vec3_t axis[3], float yaw ) {
RotatePointAroundVector( axis[1], axis[0], temp, yaw ); RotatePointAroundVector( axis[1], axis[0], temp, yaw );
} }
// cross to get axis[2] /* cross to get axis[2] */
CrossProduct( axis[0], axis[1], axis[2] ); CrossProduct( axis[0], axis[1], axis[2] );
} }
@ -459,7 +461,7 @@ AnglesToAxis
void AnglesToAxis( const vec3_t angles, vec3_t axis[3] ) { void AnglesToAxis( const vec3_t angles, vec3_t axis[3] ) {
vec3_t right; vec3_t right;
// angle vectors returns "right" instead of "y axis" /* angle vectors returns "right" instead of "y axis" */
AngleVectors( angles, axis[0], right, axis[2] ); AngleVectors( angles, axis[0], right, axis[2] );
VectorSubtract( vec3_origin, right, axis[1] ); VectorSubtract( vec3_origin, right, axis[1] );
} }
@ -510,8 +512,10 @@ void ProjectPointOnPlane( vec3_t dst, const vec3_t p, const vec3_t normal )
void MakeNormalVectors( const vec3_t forward, vec3_t right, vec3_t up) { void MakeNormalVectors( const vec3_t forward, vec3_t right, vec3_t up) {
float d; float d;
// this rotate and negate guarantees a vector /*
// not colinear with the original * this rotate and negate guarantees a vector
* not colinear with the original
*/
right[1] = -forward[0]; right[1] = -forward[0];
right[2] = forward[1]; right[2] = forward[1];
right[0] = forward[2]; right[0] = forward[2];
@ -530,7 +534,7 @@ void VectorRotate( vec3_t in, vec3_t matrix[3], vec3_t out )
out[2] = DotProduct( in, matrix[2] ); out[2] = DotProduct( in, matrix[2] );
} }
//============================================================================ /*============================================================================ */
/* /*
* float q_rsqrt( float number ) * float q_rsqrt( float number )
@ -549,11 +553,11 @@ float Q_rsqrt( float number )
x2 = number * 0.5F; x2 = number * 0.5F;
y = number; y = number;
i = * ( long * ) &y; // evil floating point bit level hacking i = * ( long * ) &y; /* evil floating point bit level hacking */
i = 0x5f3759df - ( i >> 1 ); // what the fuck? i = 0x5f3759df - ( i >> 1 ); /* what the fuck? */
y = * ( float * ) &i; y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration y = y * ( threehalfs - ( x2 * y * y ) ); /* 1st iteration */
// y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed // y = y * ( threehalfs - ( x2 * y * y ) ); /* 2nd iteration, this can be removed */
return y; return y;
} }
@ -664,7 +668,7 @@ float AngleDelta ( float angle1, float angle2 ) {
} }
//============================================================ /*============================================================*/
/* /*
@ -675,7 +679,7 @@ SetPlaneSignbits
void SetPlaneSignbits (cplane_t *out) { void SetPlaneSignbits (cplane_t *out) {
int bits, j; int bits, j;
// for fast box on planeside test /* for fast box on planeside test */
bits = 0; bits = 0;
for (j=0 ; j<3 ; j++) { for (j=0 ; j<3 ; j++) {
if (out->normal[j] < 0) { if (out->normal[j] < 0) {
@ -734,7 +738,7 @@ int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p)
float dist1, dist2; float dist1, dist2;
int sides; int sides;
// fast axial cases /* fast axial cases */
if (p->type < 3) if (p->type < 3)
{ {
if (p->dist <= emins[p->type]) if (p->dist <= emins[p->type])
@ -744,7 +748,7 @@ int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p)
return 3; return 3;
} }
// general case /* general case */
switch (p->signbits) switch (p->signbits)
{ {
case 0: case 0:
@ -780,7 +784,7 @@ int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p)
dist2 = p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2]; dist2 = p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2];
break; break;
default: default:
dist1 = dist2 = 0; // shut up compiler dist1 = dist2 = 0; /* shut up compiler */
break; break;
} }
@ -1103,10 +1107,10 @@ vec_t VectorNormalize( vec3_t v ) {
return length; return length;
} }
// /*
// fast vector normalize routine that does not check to make sure * fast vector normalize routine that does not check to make sure
// that length != 0, nor does it return length * that length != 0, nor does it return length
// */
void VectorNormalizeFast( vec3_t v ) void VectorNormalizeFast( vec3_t v )
{ {
float ilength; float ilength;
@ -1276,7 +1280,7 @@ void MatrixMultiply(float in1[3][3], float in2[3][3], float out[3][3]) {
void AngleVectors( const vec3_t angles, vec3_t forward, vec3_t right, vec3_t up) { void AngleVectors( const vec3_t angles, vec3_t forward, vec3_t right, vec3_t up) {
float angle; float angle;
static float sr, sp, sy, cr, cp, cy; static float sr, sp, sy, cr, cp, cy;
// static to help MS compiler fp bugs /* static to help MS compiler fp bugs */
angle = angles[YAW] * (M_PI*2 / 360); angle = angles[YAW] * (M_PI*2 / 360);
sy = sin(angle); sy = sin(angle);
@ -1322,7 +1326,7 @@ void PerpendicularVector( vec3_t dst, const vec3_t src )
** find the smallest magnitude axially aligned vector ** find the smallest magnitude axially aligned vector
** bias towards using z instead of x or y ** bias towards using z instead of x or y
*/ */
// for ( pos = 0, i = 0; i < 3; i++ ) /* for ( pos = 0, i = 0; i < 3; i++ ) */
for ( pos = 0, i = 2; i >= 0; i-- ) for ( pos = 0, i = 2; i >= 0; i-- )
{ {
if ( fabs( src[i] ) < minelem ) if ( fabs( src[i] ) < minelem )
@ -1360,13 +1364,13 @@ float flrandom(float min, float max)
*/ */
int irandom(int min, int max) int irandom(int min, int max)
{ {
max++; //so it can round down max++; /* so it can round down */
return (((rand() & 0x7FFF) * (max - min)) >> 15) + min; return (((rand() & 0x7FFF) * (max - min)) >> 15) + min;
} }
// use for networking - normalizes a vector, then multiplies it by 65535.0, then calls snap vector on it /* use for networking - normalizes a vector, then multiplies it by 65535.0, then calls snap vector on it
// guarantee's a short per vector instead of 4 bytes. guarantee's a short per vector instead of 4 bytes. */
void VectorShort(vec3_t vect) void VectorShort(vec3_t vect)
{ {
@ -1393,7 +1397,7 @@ float Q_powf( float x, int y )
return r; return r;
} }
//TiM: Vector-Average. Good for calculating origins from bounding boxes /* TiM: Vector-Average. Good for calculating origins from bounding boxes */
void VectorAverage( vec3_t mins, vec3_t maxs, vec3_t result ) { void VectorAverage( vec3_t mins, vec3_t maxs, vec3_t result ) {
vec3_t temp; vec3_t temp;
/*int i; /*int i;
@ -1401,12 +1405,12 @@ void VectorAverage( vec3_t mins, vec3_t maxs, vec3_t result ) {
result[i] = ( mins[i] + maxs[i] ) * 0.5; result[i] = ( mins[i] + maxs[i] ) * 0.5;
}*/ }*/
//TiM: I 'unno... this way looks l33ter lol /* TiM: I 'unno... this way looks l33ter lol */
VectorAdd( mins, maxs, temp ); VectorAdd( mins, maxs, temp );
VectorScale( temp, 0.5, result ); VectorScale( temp, 0.5, result );
} }
// Rounds the argument to the next integer. Used by SnapVector. /* Rounds the argument to the next integer. Used by SnapVector. */
void init_tonextint(qboolean verbose) void init_tonextint(qboolean verbose)
{ {
float decimal = 0.9; float decimal = 0.9;
@ -1459,7 +1463,7 @@ unsigned long atoul( const char *string )
unsigned long value; unsigned long value;
int c; int c;
// skip whitespace /* skip whitespace */
while ( *string <= ' ' ) { while ( *string <= ' ' ) {
if ( !*string ) { if ( !*string ) {
return 0; return 0;
@ -1467,7 +1471,7 @@ unsigned long atoul( const char *string )
string++; string++;
} }
// read digits /* read digits */
value = 0; value = 0;
do { do {
c = *string++; c = *string++;
@ -1478,7 +1482,7 @@ unsigned long atoul( const char *string )
value = value * 10 + c; value = value * 10 + c;
} while ( 1 ); } while ( 1 );
// not handling 10e10 notation... /* not handling 10e10 notation... */
return value; return value;
} }

View file

@ -1,13 +1,14 @@
// Copyright (C) 1999-2000 Id Software, Inc. /* Copyright (C) 1999-2000 Id Software, Inc.
// *
// q_shared.c -- stateless support routines that are included in each code dll * q_shared.c -- stateless support routines that are included in each code dll
*/
#include "q_shared.h" #include "q_shared.h"
//vmCvar_t rpg_medicsrevive; //RPG-X: RedTechie - To let bg_pmovto work /*vmCvar_t rpg_medicsrevive; //RPG-X: RedTechie - To let bg_pmovto work
//vmCvar_t rpg_noclipspectating; //RPG-X J2J: Defined here to prevent link errors when compiling cgame vmCvar_t rpg_noclipspectating; //RPG-X J2J: Defined here to prevent link errors when compiling cgame
//qboolean ClientNCSpec = qtrue; //RPG-X J2J: Private flag for weather the client chooses to spectate noclip style qboolean ClientNCSpec = qtrue; //RPG-X J2J: Private flag for weather the client chooses to spectate noclip style*/
//float Q_powf ( float x, int y ); /* float Q_powf ( float x, int y ); */
float Com_Clamp( float min, float max, float value ) { float Com_Clamp( float min, float max, float value ) {
if ( value < min ) { if ( value < min ) {
@ -61,15 +62,15 @@ void COM_DefaultExtension (char *path, int maxSize, const char *extension ) {
char oldPath[MAX_QPATH]; char oldPath[MAX_QPATH];
char *src; char *src;
// /*
// if path doesn't have a .EXT, append extension * if path doesn't have a .EXT, append extension
// (extension should include the .) * (extension should include the .)
// */
src = path + strlen(path) - 1; src = path + strlen(path) - 1;
while (*src != '/' && src != path) { while (*src != '/' && src != path) {
if ( *src == '.' ) { if ( *src == '.' ) {
return; // it has an extension return; /* it has an extension */
} }
src--; src--;
} }
@ -86,8 +87,10 @@ void COM_DefaultExtension (char *path, int maxSize, const char *extension ) {
============================================================================ ============================================================================
*/ */
// can't just use function pointers, or dll linkage can /*
// mess up when qcommon is included in multiple places *can't just use function pointers, or dll linkage can
* mess up when qcommon is included in multiple places
*/
static short (*_BigShort) (short l); static short (*_BigShort) (short l);
static short (*_LittleShort) (short l); static short (*_LittleShort) (short l);
static int (*_BigLong) (int l); static int (*_BigLong) (int l);
@ -97,20 +100,19 @@ static float (*_LittleFloat) (float l);
#ifdef _M_IX86 #ifdef _M_IX86
// /*
// optimised version for intel stuff... * optimised version for intel stuff...
// */
short BigShort(short l){return _BigShort(l);} short BigShort(short l){return _BigShort(l);}
int BigLong (int l) {return _BigLong(l);} int BigLong (int l) {return _BigLong(l);}
float BigFloat (float l) {return _BigFloat(l);} float BigFloat (float l) {return _BigFloat(l);}
#define LittleShort(l) l #define LittleShort(l) l
#define LittleLong(l) l #define LittleLong(l) l
#define LittleFloat(l) l #define LittleFloat(l) l
//
#else #else
// /*
// standard smart byte-swap stuff.... * standard smart byte-swap stuff....
// */
short BigShort(short l){return _BigShort(l);} short BigShort(short l){return _BigShort(l);}
short LittleShort(short l) {return _LittleShort(l);} short LittleShort(short l) {return _LittleShort(l);}
int BigLong (int l) {return _BigLong(l);} int BigLong (int l) {return _BigLong(l);}
@ -184,7 +186,7 @@ void Swap_Init (void)
{ {
byte swaptest[2] = {1,0}; byte swaptest[2] = {1,0};
// set the byte swapping variables in a portable manner /* set the byte swapping variables in a portable manner */
if ( *(short *)swaptest == 1) if ( *(short *)swaptest == 1)
{ {
_BigShort = ShortSwap; _BigShort = ShortSwap;
@ -273,7 +275,7 @@ char *COM_ParseExt( char **data_p, qboolean allowLineBreaks )
len = 0; len = 0;
com_token[0] = 0; com_token[0] = 0;
// make sure incoming data is valid /* make sure incoming data is valid */
if ( !data ) if ( !data )
{ {
*data_p = NULL; *data_p = NULL;
@ -282,7 +284,7 @@ char *COM_ParseExt( char **data_p, qboolean allowLineBreaks )
while ( 1 ) while ( 1 )
{ {
// skip whitespace /* skip whitespace */
data = SkipWhitespace( data, &hasNewLines ); data = SkipWhitespace( data, &hasNewLines );
if ( !data ) if ( !data )
{ {
@ -297,13 +299,13 @@ char *COM_ParseExt( char **data_p, qboolean allowLineBreaks )
c = *data; c = *data;
// skip double slash comments /* skip double slash comments */
if ( c == '/' && data[1] == '/' ) if ( c == '/' && data[1] == '/' )
{ {
while (*data && *data != '\n') while (*data && *data != '\n')
data++; data++;
} }
// skip /* */ comments /* skip comments */
else if ( c=='/' && data[1] == '*' ) else if ( c=='/' && data[1] == '*' )
{ {
while ( *data && ( *data != '*' || data[1] != '/' ) ) while ( *data && ( *data != '*' || data[1] != '/' ) )
@ -321,7 +323,7 @@ char *COM_ParseExt( char **data_p, qboolean allowLineBreaks )
} }
} }
// handle quoted strings /* handle quoted strings */
if (c == '\"') if (c == '\"')
{ {
data++; data++;
@ -342,7 +344,7 @@ char *COM_ParseExt( char **data_p, qboolean allowLineBreaks )
} }
} }
// parse a regular word /* parse a regular word */
do do
{ {
if (len < MAX_TOKEN_CHARS) if (len < MAX_TOKEN_CHARS)
@ -358,7 +360,7 @@ char *COM_ParseExt( char **data_p, qboolean allowLineBreaks )
if (len == MAX_TOKEN_CHARS) if (len == MAX_TOKEN_CHARS)
{ {
// Com_Printf ("Token exceeded %i chars, discarded.\n", MAX_TOKEN_CHARS); /* Com_Printf ("Token exceeded %i chars, discarded.\n", MAX_TOKEN_CHARS); */
len = 0; len = 0;
} }
com_token[len] = 0; com_token[len] = 0;
@ -457,7 +459,7 @@ qboolean COM_ParseVec3( char **data, vec3_t vector )
vector[i] = atof( token ); vector[i] = atof( token );
} }
//TiM: Not reeeeally necessary /* TiM: Not reeeeally necessary */
token = COM_ParseExt( data, qfalse ); token = COM_ParseExt( data, qfalse );
if ( token[0] == 0 ) if ( token[0] == 0 )
{ {
@ -505,7 +507,7 @@ qboolean COM_ParseVec4( char **data, vec4_t vector )
vector[i] = atof( token ); vector[i] = atof( token );
} }
//TiM: Not reeeeally necessary /* TiM: Not reeeeally necessary */
token = COM_ParseExt( data, qfalse ); token = COM_ParseExt( data, qfalse );
if ( token[0] == 0 ) if ( token[0] == 0 )
{ {
@ -522,7 +524,7 @@ qboolean COM_ParseVec4( char **data, vec4_t vector )
} }
#if 0 #if 0
// no longer used /* no longer used */
/* /*
=============== ===============
COM_ParseInfos COM_ParseInfos
@ -604,7 +606,7 @@ void SkipBracedSection (char **program) {
char *token; char *token;
int depth=0; int depth=0;
if (com_token[0]=='{') { //for tr_shader which just ate the brace if (com_token[0]=='{') { /* for tr_shader which just ate the brace */
depth = 1; depth = 1;
} }
do { do {
@ -765,7 +767,7 @@ void Q_strncpyz( char *dest, const char *src, int destsize ) {
int Q_stricmpn (const char *s1, const char *s2, int n) { int Q_stricmpn (const char *s1, const char *s2, int n) {
int c1, c2; int c1, c2;
// bk001129 - moved in 1.17 fix not in id codebase /* bk001129 - moved in 1.17 fix not in id codebase */
if ( s1 == NULL ) { if ( s1 == NULL ) {
if ( s2 == NULL ) if ( s2 == NULL )
return 0; return 0;
@ -782,7 +784,7 @@ int Q_stricmpn (const char *s1, const char *s2, int n) {
c2 = *s2++; c2 = *s2++;
if (!n--) { if (!n--) {
return 0; // strings are equal until end point return 0; /* strings are equal until end point */
} }
if (c1 != c2) { if (c1 != c2) {
@ -798,7 +800,7 @@ int Q_stricmpn (const char *s1, const char *s2, int n) {
} }
} while (c1); } while (c1);
return 0; // strings are equal return 0; /* strings are equal */
} }
int Q_strncmp (const char *s1, const char *s2, int n) { int Q_strncmp (const char *s1, const char *s2, int n) {
@ -809,7 +811,7 @@ int Q_strncmp (const char *s1, const char *s2, int n) {
c2 = *s2++; c2 = *s2++;
if (!n--) { if (!n--) {
return 0; // strings are equal until end point return 0; /* strings are equal until end point */
} }
if (c1 != c2) { if (c1 != c2) {
@ -817,7 +819,7 @@ int Q_strncmp (const char *s1, const char *s2, int n) {
} }
} while (c1); } while (c1);
return 0; // strings are equal return 0; /* strings are equal */
} }
int Q_stricmp (const char *s1, const char *s2) { int Q_stricmp (const char *s1, const char *s2) {
@ -847,7 +849,7 @@ char *Q_strupr( char *s1 ) {
return s1; return s1;
} }
// never goes past bounds or leaves without a terminating 0 /* never goes past bounds or leaves without a terminating 0 */
void Q_strcat( char *dest, int size, const char *src ) { void Q_strcat( char *dest, int size, const char *src ) {
int l1; int l1;
@ -903,11 +905,11 @@ char *Q_CleanStr( char *string ) {
return string; return string;
} }
#ifdef QVM
void QDECL Com_sprintf( char *dest, int size, const char *fmt, ...) { void QDECL Com_sprintf( char *dest, int size, const char *fmt, ...) {
int len; int len;
va_list argptr; va_list argptr;
char bigbuffer[32000]; // big, but small enough to fit in PPC stack char bigbuffer[32000]; /* big, but small enough to fit in PPC stack */
va_start (argptr,fmt); va_start (argptr,fmt);
len = vsprintf (bigbuffer,fmt,argptr); len = vsprintf (bigbuffer,fmt,argptr);
@ -922,7 +924,34 @@ void QDECL Com_sprintf( char *dest, int size, const char *fmt, ...) {
} }
Q_strncpyz (dest, bigbuffer, size ); Q_strncpyz (dest, bigbuffer, size );
} }
#else
void QDECL Com_sprintf( char *dest, int size, const char *fmt, ...) {
int len;
va_list argptr;
char *bigbuffer = NULL;
bigbuffer = (char *)malloc(sizeof(char)*32000);
if(!bigbuffer) {
Com_Printf("Com_sprintf: could not allocate %u bytes for BigBuffer\n", sizeof(char)*32000);
return;
}
memset(bigbuffer, 0, sizeof(bigbuffer));
va_start (argptr,fmt);
len = vsprintf (bigbuffer,fmt,argptr);
va_end (argptr);
if ( len >= sizeof( bigbuffer ) ) {
free(bigbuffer);
Com_Error( ERR_FATAL, "Com_sprintf: overflowed bigbuffer" );
}
if (len >= size) {
Com_Printf ("Com_sprintf: overflow of %i in %i\n", len, size);
Com_Printf("Fmt: %s\n", fmt);
Com_Printf("BigBuffer: %s\n", bigbuffer);
}
Q_strncpyz (dest, bigbuffer, size );
}
#endif
/* /*
============ ============
@ -935,7 +964,7 @@ FIXME: make this buffer size safe someday
*/ */
char * QDECL va( char *format, ... ) { char * QDECL va( char *format, ... ) {
va_list argptr; va_list argptr;
static char string[2][32000]; // in case va is called by nested functions static char string[2][32000]; /* in case va is called by nested functions */
static int index = 0; static int index = 0;
char *buf; char *buf;
@ -969,8 +998,8 @@ FIXME: overflow check?
*/ */
char *Info_ValueForKey( const char *s, const char *key ) { char *Info_ValueForKey( const char *s, const char *key ) {
char pkey[BIG_INFO_KEY]; char pkey[BIG_INFO_KEY];
static char value[2][BIG_INFO_VALUE]; // use two buffers so compares static char value[2][BIG_INFO_VALUE]; /* use two buffers so compares
// work without stomping on each other work without stomping on each other */
static int valueindex = 0; static int valueindex = 0;
char *o; char *o;
@ -1073,6 +1102,9 @@ void Info_RemoveKey( char *s, const char *key ) {
Com_Error( ERR_DROP, "Info_RemoveKey: oversize infostring" ); Com_Error( ERR_DROP, "Info_RemoveKey: oversize infostring" );
} }
memset(pkey, 0, sizeof(pkey));
memset(value, 0, sizeof(value));
if (strchr (key, '\\')) { if (strchr (key, '\\')) {
return; return;
} }
@ -1103,7 +1135,7 @@ void Info_RemoveKey( char *s, const char *key ) {
if (!strcmp (key, pkey) ) if (!strcmp (key, pkey) )
{ {
strcpy (start, s); // remove this part strcpy (start, s); /* remove this part */
return; return;
} }
@ -1118,7 +1150,7 @@ void Info_RemoveKey( char *s, const char *key ) {
Info_RemoveKey_Big Info_RemoveKey_Big
=================== ===================
*/ */
void Info_RemoveKey_Big( char *s, const char *key ) { #ifdef QVM
char *start; char *start;
char pkey[BIG_INFO_KEY]; char pkey[BIG_INFO_KEY];
char value[BIG_INFO_VALUE]; char value[BIG_INFO_VALUE];
@ -1158,7 +1190,7 @@ void Info_RemoveKey_Big( char *s, const char *key ) {
if (!strcmp (key, pkey) ) if (!strcmp (key, pkey) )
{ {
strcpy (start, s); // remove this part strcpy (start, s); /* remove this part */
return; return;
} }
@ -1167,7 +1199,82 @@ void Info_RemoveKey_Big( char *s, const char *key ) {
} }
} }
#else
void Info_RemoveKey_Big( char *s, const char *key ) {
char *start;
char *pkey;
char *value;
char *o;
if ( strlen( s ) >= BIG_INFO_STRING ) {
Com_Error( ERR_DROP, "Info_RemoveKey_Big: oversize infostring" );
}
pkey = (char *)malloc(sizeof(char)*BIG_INFO_KEY);
if(!pkey) {
Com_Printf("Info_RemoveKey_Big: could not allocate %u byte\n", sizeof(char)*BIG_INFO_KEY);
return;
}
value = (char *)malloc(sizeof(char)*BIG_INFO_VALUE);
if(!value) {
Com_Printf("Info_RemoveKey_Big: could not allocate %u byte\n", sizeof(char)*BIG_INFO_VALUE);
free(value);
return;
}
if (strchr (key, '\\')) {
free(pkey);
free(value);
return;
}
while (1)
{
start = s;
if (*s == '\\')
s++;
o = pkey;
while (*s != '\\')
{
if (!*s) {
free(value);
free(pkey);
return;
}
*o++ = *s++;
}
*o = 0;
s++;
o = value;
while (*s != '\\' && *s)
{
if (!*s) {
free(pkey);
free(value);
return;
}
*o++ = *s++;
}
*o = 0;
if (!strcmp (key, pkey) )
{
strcpy (start, s); /* remove this part */
free(value);
free(pkey);
return;
}
if (!*s) {
free(pkey);
free(value);
return;
}
}
free(value);
free(pkey);
}
#endif
@ -1327,7 +1434,7 @@ const char *GetStringForID( stringID_table_t *table, int id )
int index = 0; int index = 0;
while ( ( table[index].name != NULL ) && while ( ( table[index].name != NULL ) &&
( table[index].name[0] != 0 )/*VALIDSTRING( table[index].name )*/ )//RPG-X: RedTechie - Compile errors Fixed ( table[index].name[0] != 0 )/*VALIDSTRING( table[index].name )*/ )/* RPG-X: RedTechie - Compile errors Fixed */
{ {
if ( table[index].id == id ) if ( table[index].id == id )
return table[index].name; return table[index].name;
@ -1339,6 +1446,6 @@ const char *GetStringForID( stringID_table_t *table, int id )
} }
//==================================================================== /*====================================================================*/

Binary file not shown.