#include "mdfour.h"
extern cvar_t prvm_backtraceforwarnings;
+#ifdef USEODE
extern dllhandle_t ode_dll;
+#endif
// LordHavoc: changed this to NOT use a return statement, so that it can be used in functions that must return a value
void VM_Warning(prvm_prog_t *prog, const char *fmt, ...)
e++;
if ((e - start) == len && !strncasecmp(start, name, len))
{
+#ifdef USEODE
// special sheck for ODE
if (!strncasecmp("DP_PHYSICS_ODE", name, 14))
{
-#ifdef ODE_DYNAMIC
+#ifndef LINK_TO_LIBODE
return ode_dll ? true : false;
#else
-#ifdef ODE_STATIC
+#ifdef LINK_TO_LIBODE
return true;
#else
return false;
#endif
#endif
}
+#endif
// special sheck for d0_blind_id
if (!strcasecmp("DP_CRYPTO", name))
szString = PRVM_G_STRING(OFS_PARM0);
- //nCnt = COM_StringLengthNoColors(szString, 0, NULL);
- nCnt = u8_COM_StringLengthNoColors(szString, 0, NULL);
+ //nCnt = (int)COM_StringLengthNoColors(szString, 0, NULL);
+ nCnt = (int)u8_COM_StringLengthNoColors(szString, 0, NULL);
PRVM_G_FLOAT(OFS_RETURN) = nCnt;
}
if (start < 0) // FTE_STRINGS feature
{
- u_slength = u8_strlen(s);
+ u_slength = (int)u8_strlen(s);
start += u_slength;
start = bound(0, start, u_slength);
}
if (length < 0) // FTE_STRINGS feature
{
if (!u_slength) // it's not calculated when it's not needed above
- u_slength = u8_strlen(s);
+ u_slength = (int)u8_strlen(s);
length += u_slength - start + 1;
}
if (!s[0])
continue;
separators[numseparators] = s;
- separatorlen[numseparators] = strlen(s);
+ separatorlen[numseparators] = (int)strlen(s);
numseparators++;
}
{
VM_SAFEPARMCOUNT(0,VM_serverstate);
- PRVM_G_FLOAT(OFS_RETURN) = sv.active && (svs.maxclients > 1 || cls.state == ca_dedicated);
+ PRVM_G_FLOAT(OFS_RETURN) = sv.active;
}
/*
float gettime(prvm_prog_t *prog)
=========
*/
+#ifdef CONFIG_CD
float CDAudio_GetPosition(void);
+#endif
void VM_gettime(prvm_prog_t *prog)
{
int timer_index;
case 3: // GETTIME_UPTIME
PRVM_G_FLOAT(OFS_RETURN) = realtime;
break;
+#ifdef CONFIG_CD
case 4: // GETTIME_CDTRACK
PRVM_G_FLOAT(OFS_RETURN) = CDAudio_GetPosition();
break;
+#endif
default:
VM_Warning(prog, "VM_gettime: %s: unsupported timer specified, returning realtime\n", prog->name);
PRVM_G_FLOAT(OFS_RETURN) = realtime;
prvm_stringbuffer_t *stringbuffer;
int i, numbuffers;
- numbuffers = Mem_ExpandableArray_IndexRange(&prog->stringbuffersarray);
+ numbuffers = (int)Mem_ExpandableArray_IndexRange(&prog->stringbuffersarray);
for (i = 0; i < numbuffers; i++)
if ( (stringbuffer = (prvm_stringbuffer_t *)Mem_ExpandableArray_RecordAtIndex(&prog->stringbuffersarray, i)) )
BufStr_Del(prog, stringbuffer);
{
if (stringbuffer->strings[strindex])
{
- if ((strlength = strlen(stringbuffer->strings[strindex])))
+ if ((strlength = (int)strlen(stringbuffer->strings[strindex])))
FS_Write(prog->openfiles[filenum], stringbuffer->strings[strindex], strlength);
FS_Write(prog->openfiles[filenum], "\n", 1);
}
char *ppos, *qpos;
int patternlength;
- patternlength = strlen(pattern);
+ patternlength = (int)strlen(pattern);
ppos = strchr(pattern, '*');
qpos = strchr(pattern, '?');
// has ? - pattern
strlcpy(string, PRVM_G_STRING(OFS_PARM1), sizeof(string));
match = detect_match_rule(string, &matchrule);
}
- matchlen = strlen(match);
+ matchlen = (int)strlen(match);
// find
i = (prog->argc > 3) ? (int)PRVM_G_FLOAT(OFS_PARM3) : 0;
}
// offset
- l = strlen(match);
+ l = (int)strlen(match);
if (prog->argc > 3)
s += max(0, min((unsigned int)PRVM_G_FLOAT(OFS_PARM3), strlen(s)-1));
instr = PRVM_G_STRING(OFS_PARM0);
match = PRVM_G_STRING(OFS_PARM1);
firstofs = (prog->argc > 2)?(int)PRVM_G_FLOAT(OFS_PARM2):0;
- firstofs = u8_bytelen(instr, firstofs);
+ firstofs = (int)u8_bytelen(instr, firstofs);
if (firstofs && (firstofs < 0 || firstofs > (int)strlen(instr)))
{
int index;
VM_SAFEPARMCOUNT(2, VM_str2chr);
s = PRVM_G_STRING(OFS_PARM0);
- index = u8_bytelen(s, (int)PRVM_G_FLOAT(OFS_PARM1));
+ index = (int)u8_bytelen(s, (int)PRVM_G_FLOAT(OFS_PARM1));
if((unsigned)index < strlen(s))
{
redalpha = (int) PRVM_G_FLOAT(OFS_PARM1); //0 same, 1 white, 2 red, 5 alternate, 6 alternate-alternate
rednum = (int) PRVM_G_FLOAT(OFS_PARM2); //0 same, 1 white, 2 red, 3 redspecial, 4 whitespecial, 5 alternate, 6 alternate-alternate
VM_VarString(prog, 3, (char *) resbuf, sizeof(resbuf));
- len = strlen((char *) resbuf);
+ len = (int)strlen((char *) resbuf);
for (i = 0; i < len; i++, result++) //should this be done backwards?
{
if(!digest)
digest = "";
VM_VarString(prog, 1, s, sizeof(s));
- len = strlen(s);
+ len = (int)strlen(s);
outlen = 0;
fn = PRVM_G_STRING(OFS_PARM0);
pack = FS_WhichPack(fn);
- PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, pack ? pack : "");
+ PRVM_G_INT(OFS_RETURN) = pack ? PRVM_SetTempString(prog, pack) : 0;
}
typedef struct
default:
verbatim:
if(o < end - 1)
- *o++ = *s++;
+ *o++ = *s;
+ ++s;
break;
}
}
VectorCopy(PRVM_G_VECTOR(OFS_PARM1), f.v1);
VM_physics_ApplyCmd(ed, &f);
}
+
+extern cvar_t prvm_coverage;
+void VM_coverage(prvm_prog_t *prog)
+{
+ VM_SAFEPARMCOUNT(0, VM_coverage);
+ if (prog->explicit_profile[prog->xstatement]++ == 0 && (prvm_coverage.integer & 2))
+ PRVM_ExplicitCoverageEvent(prog, prog->xfunction, prog->xstatement);
+}