void PR_LoadProgs (const char *progsname)
{
int i;
+ fs_offset_t filesize;
dstatement_t *st;
ddef_t *infielddefs;
dfunction_t *dfunctions;
PR_FreeAll();
- progs = (dprograms_t *)FS_LoadFile (progsname, serverprogs_mempool, false);
+ progs = (dprograms_t *)FS_LoadFile (progsname, serverprogs_mempool, false, &filesize);
if (!progs)
Host_Error ("PR_LoadProgs: couldn't load %s", progsname);
- Con_DPrintf("Programs occupy %iK.\n", fs_filesize/1024);
+ Con_DPrintf("Programs occupy %iK.\n", filesize/1024);
- pr_crc = CRC_Block((qbyte *)progs, fs_filesize);
+ pr_crc = CRC_Block((unsigned char *)progs, filesize);
// byte swap the header
for (i = 0;i < (int) sizeof(*progs) / 4;i++)
if (progs->crc != PROGHEADER_CRC && progs->crc != 32401) // tenebrae crc also allowed
Host_Error ("progs.dat system vars have been modified, progdefs.h is out of date");
- //prog->functions = (dfunction_t *)((qbyte *)progs + progs->ofs_functions);
- dfunctions = (dfunction_t *)((qbyte *)progs + progs->ofs_functions);
+ //prog->functions = (dfunction_t *)((unsigned char *)progs + progs->ofs_functions);
+ dfunctions = (dfunction_t *)((unsigned char *)progs + progs->ofs_functions);
pr_strings = (char *)progs + progs->ofs_strings;
pr_stringssize = 0;
for (i = 0;i < progs->numstrings;i++)
{
- if (progs->ofs_strings + pr_stringssize >= fs_filesize)
- Host_Error ("progs.dat strings go past end of file\n");
+ if (progs->ofs_strings + pr_stringssize >= filesize)
+ Host_Error ("progs.dat strings go past end of file");
pr_stringssize += strlen (pr_strings + pr_stringssize) + 1;
}
pr_numknownstrings = 0;
pr_maxknownstrings = 0;
pr_knownstrings = NULL;
- pr_globaldefs = (ddef_t *)((qbyte *)progs + progs->ofs_globaldefs);
+ pr_globaldefs = (ddef_t *)((unsigned char *)progs + progs->ofs_globaldefs);
// we need to expand the fielddefs list to include all the engine fields,
// so allocate a new place for it
- infielddefs = (ddef_t *)((qbyte *)progs + progs->ofs_fielddefs);
+ infielddefs = (ddef_t *)((unsigned char *)progs + progs->ofs_fielddefs);
pr_fielddefs = PR_Alloc((progs->numfielddefs + DPFIELDS) * sizeof(ddef_t));
prog->functions = PR_Alloc(sizeof(mfunction_t) * progs->numfunctions);
- pr_statements = (dstatement_t *)((qbyte *)progs + progs->ofs_statements);
+ pr_statements = (dstatement_t *)((unsigned char *)progs + progs->ofs_statements);
// moved edict_size calculation down below field adding code
- pr_global_struct = (globalvars_t *)((qbyte *)progs + progs->ofs_globals);
+ pr_global_struct = (globalvars_t *)((unsigned char *)progs + progs->ofs_globals);
pr_globals = (float *)pr_global_struct;
// byte swap the lumps
case OP_IF:
case OP_IFNOT:
if ((unsigned short) st->a >= progs->numglobals || st->b + i < 0 || st->b + i >= progs->numstatements)
- Host_Error("PR_LoadProgs: out of bounds IF/IFNOT (statement %d)\n", i);
+ Host_Error("PR_LoadProgs: out of bounds IF/IFNOT (statement %d)", i);
break;
case OP_GOTO:
if (st->a + i < 0 || st->a + i >= progs->numstatements)
- Host_Error("PR_LoadProgs: out of bounds GOTO (statement %d)\n", i);
+ Host_Error("PR_LoadProgs: out of bounds GOTO (statement %d)", i);
break;
// global global global
case OP_ADD_F:
case OP_LOAD_FNC:
case OP_LOAD_V:
if ((unsigned short) st->a >= progs->numglobals || (unsigned short) st->b >= progs->numglobals || (unsigned short) st->c >= progs->numglobals)
- Host_Error("PR_LoadProgs: out of bounds global index (statement %d)\n", i);
+ Host_Error("PR_LoadProgs: out of bounds global index (statement %d)", i);
break;
// global none global
case OP_NOT_F:
case OP_NOT_FNC:
case OP_NOT_ENT:
if ((unsigned short) st->a >= progs->numglobals || (unsigned short) st->c >= progs->numglobals)
- Host_Error("PR_LoadProgs: out of bounds global index (statement %d)\n", i);
+ Host_Error("PR_LoadProgs: out of bounds global index (statement %d)", i);
break;
// 2 globals
case OP_STOREP_F:
case OP_STOREP_V:
case OP_STORE_V:
if ((unsigned short) st->a >= progs->numglobals || (unsigned short) st->b >= progs->numglobals)
- Host_Error("PR_LoadProgs: out of bounds global index (statement %d)\n", i);
+ Host_Error("PR_LoadProgs: out of bounds global index (statement %d)", i);
break;
// 1 global
case OP_CALL0:
case OP_DONE:
case OP_RETURN:
if ((unsigned short) st->a >= progs->numglobals)
- Host_Error("PR_LoadProgs: out of bounds global index (statement %d)\n", i);
+ Host_Error("PR_LoadProgs: out of bounds global index (statement %d)", i);
break;
default:
- Host_Error("PR_LoadProgs: unknown opcode %d at statement %d\n", st->op, i);
+ Host_Error("PR_LoadProgs: unknown opcode %d at statement %d", st->op, i);
break;
}
}
// return e - prog->edicts;
//}
-//#define PRVM_EDICT_TO_PROG(e) ((qbyte *)(((prvm_edict_t *)e)->v) - (qbyte *)(prog->edictsfields))
+//#define PRVM_EDICT_TO_PROG(e) ((unsigned char *)(((prvm_edict_t *)e)->v) - (unsigned char *)(prog->edictsfields))
//#define PRVM_PROG_TO_EDICT(e) (prog->edicts + ((e) / (progs->entityfields * 4)))
int PRVM_EDICT_TO_PROG(prvm_edict_t *e)
{
int n;
n = e - prog->edicts;
if ((unsigned int)n >= (unsigned int)prog->max_edicts)
- Host_Error("PRVM_EDICT_TO_PROG: invalid edict %8p (number %i compared to world at %8p)\n", e, n, prog->edicts);
+ Host_Error("PRVM_EDICT_TO_PROG: invalid edict %8p (number %i compared to world at %8p)", e, n, prog->edicts);
return n;// EXPERIMENTAL
- //return (qbyte *)e->v - (qbyte *)prog->edictsfields;
+ //return (unsigned char *)e->v - (unsigned char *)prog->edictsfields;
}
prvm_edict_t *PRVM_PROG_TO_EDICT(int n)
{
if ((unsigned int)n >= (unsigned int)prog->max_edicts)
- Host_Error("PRVM_PROG_TO_EDICT: invalid edict number %i\n", n);
+ Host_Error("PRVM_PROG_TO_EDICT: invalid edict number %i", n);
return prog->edicts + n; // EXPERIMENTAL
//return prog->edicts + ((n) / (progs->entityfields * 4));
}
{
num = -1 - num;
if (!pr_knownstrings[num])
- Host_Error("PRVM_GetString: attempt to get string that is already freed\n");
+ Host_Error("PRVM_GetString: attempt to get string that is already freed");
return pr_knownstrings[num];
}
else
{
- Host_Error("PRVM_GetString: invalid string offset %i\n", num);
+ Host_Error("PRVM_GetString: invalid string offset %i", num);
return "";
}
}
for (i = 0;i < pr_numknownstrings;i++)
if (pr_knownstrings[i] == s)
return -1 - i;
- Host_Error("PR_SetQCString: unknown string\n");
+ Host_Error("PR_SetQCString: unknown string");
return -1 - i;
}
if (!s)
return 0;
if (s >= pr_strings && s <= pr_strings + pr_stringssize)
- Host_Error("PRVM_SetEngineString: s in pr_strings area\n");
+ Host_Error("PRVM_SetEngineString: s in pr_strings area");
for (i = 0;i < pr_numknownstrings;i++)
if (pr_knownstrings[i] == s)
return -1 - i;
{
int i;
if (!s)
- Host_Error("PR_FreeString: attempt to free a NULL string\n");
+ Host_Error("PR_FreeString: attempt to free a NULL string");
if (s >= pr_strings && s <= pr_strings + pr_stringssize)
- Host_Error("PR_FreeString: attempt to free a constant string\n");
+ Host_Error("PR_FreeString: attempt to free a constant string");
for (i = 0;i < pr_numknownstrings;i++)
if (pr_knownstrings[i] == s)
break;
if (i == pr_numknownstrings)
- Host_Error("PR_FreeString: attempt to free a non-existent or already freed string\n");
+ Host_Error("PR_FreeString: attempt to free a non-existent or already freed string");
PR_Free((char *)pr_knownstrings[i]);
pr_knownstrings[i] = NULL;
}