int edict;
} prvm_eval_t;
-typedef struct prvm_required_field_s
+typedef struct prvm_required_field_s
{
int type;
const char *name;
// However, the first one should be preferred.
} priv;
// QuakeC fields (stored in dynamically resized array)
- union
+ union
{
void *vp;
entvars_t *server;
void (*init_cmd)(void); // [INIT] used by PRVM_InitProg
void (*reset_cmd)(void); // [INIT] used by PRVM_ResetProg
- void (*error_cmd)(void); // [INIT]
+ void (*error_cmd)(const char *format, ...); // [INIT]
} prvm_prog_t;
const char *PRVM_GetString(int num);
int PRVM_SetQCString(const char *s);
int PRVM_SetEngineString(const char *s);
-char *PRVM_AllocString(int bufferlength);
-void PRVM_FreeString(char *s);
+int PRVM_AllocString(int bufferlength, char **pointer);
+void PRVM_FreeString(int num);
//============================================================================
// used as replacement for a prog stack
-#define PRVM_DEBUGPRSTACK
+//#define PRVM_DEBUGPRSTACK
#ifdef PRVM_DEBUGPRSTACK
-#define PRVM_Begin if(prog != 0) Host_Error("prog not 0(prog = %i) in file: %s line: %i!\n", PRVM_GetProgNr(), __FILE__, __LINE__)
+#define PRVM_Begin if(prog != 0) Con_Printf("prog not 0(prog = %i) in file: %s line: %i!\n", PRVM_GetProgNr(), __FILE__, __LINE__)
#define PRVM_End prog = 0
#else
#define PRVM_Begin
// helper macro to make function pointer calls easier
#define PRVM_GCALL(func) if(prog->func) prog->func
-#define PRVM_ERROR Host_Error
+#define PRVM_ERROR prog->error_cmd
// other prog handling functions
qboolean PRVM_SetProgFromString(const char *str);