mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-03-20 09:21:09 +00:00
[gamecode] Make PF_VarString v6p-only
It's not enforced a this stage, and it would be easy enough to handle, but it turns out all the standard quake and quakeworld progs never used ... for the print functions: the behavior of PF_VarString was undocumented and so... tough :P.
This commit is contained in:
parent
95c4cdd1b0
commit
7c6ef06dfb
5 changed files with 16 additions and 30 deletions
|
@ -1843,7 +1843,7 @@ extern struct cvar_s *pr_faultchecks;
|
|||
*/
|
||||
///@{
|
||||
|
||||
char *PF_VarString (progs_t *pr, int first);
|
||||
char *PF_VarString (progs_t *pr, int first, int count);
|
||||
void PR_Cmds_Init (progs_t *pr);
|
||||
|
||||
extern const char *pr_gametype;
|
||||
|
|
|
@ -54,27 +54,13 @@ VISIBLE const char *pr_gametype = "";
|
|||
/* BUILT-IN FUNCTIONS */
|
||||
|
||||
VISIBLE char *
|
||||
PF_VarString (progs_t *pr, int first)
|
||||
PF_VarString (progs_t *pr, int first, int argc)
|
||||
{
|
||||
char *out, *dst;
|
||||
const char *src;
|
||||
int len, i;
|
||||
int argc = pr->pr_argc;
|
||||
pr_type_t **argv = pr->pr_params;
|
||||
|
||||
if (pr->progs->version == PROG_VERSION) {
|
||||
__auto_type va_list = &P_PACKED (pr, pr_va_list_t, 0);
|
||||
argc = va_list->count;
|
||||
if (argc) {
|
||||
argv = alloca (argc * sizeof (pr_type_t *));
|
||||
for (int i = 0; i < argc; i++) {
|
||||
argv[i] = &pr->pr_globals[va_list->list + i * 4];
|
||||
}
|
||||
} else {
|
||||
argv = 0;
|
||||
}
|
||||
}
|
||||
|
||||
for (len = 0, i = first; i < argc; i++)
|
||||
len += strlen (PR_GetString (pr, argv[i]->string_var));
|
||||
dst = out = Hunk_TempAlloc (0, len + 1);
|
||||
|
@ -367,7 +353,7 @@ PF_eprint (progs_t *pr)
|
|||
static void
|
||||
PF_dprint (progs_t *pr)
|
||||
{
|
||||
Sys_Printf ("%s", PF_VarString (pr, 0));
|
||||
Sys_Printf ("%s", PF_VarString (pr, 0, 1));
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -71,7 +71,7 @@ PF_error (progs_t *pr)
|
|||
const char *s;
|
||||
edict_t *ed;
|
||||
|
||||
s = PF_VarString (pr, 0);
|
||||
s = PF_VarString (pr, 0, 1);
|
||||
Sys_Printf ("======SERVER ERROR in %s:\n%s\n",
|
||||
PR_GetString (pr, pr->pr_xfunction->descriptor->name), s);
|
||||
ed = PROG_TO_EDICT (pr, *sv_globals.self);
|
||||
|
@ -95,7 +95,7 @@ PF_objerror (progs_t *pr)
|
|||
const char *s;
|
||||
edict_t *ed;
|
||||
|
||||
s = PF_VarString (pr, 0);
|
||||
s = PF_VarString (pr, 0, 1);
|
||||
Sys_Printf ("======OBJECT ERROR in %s:\n%s\n",
|
||||
PR_GetString (pr, pr->pr_xfunction->descriptor->name), s);
|
||||
ed = PROG_TO_EDICT (pr, *sv_globals.self);
|
||||
|
@ -287,7 +287,7 @@ PF_bprint (progs_t *pr)
|
|||
{
|
||||
const char *s;
|
||||
|
||||
s = PF_VarString (pr, 0);
|
||||
s = PF_VarString (pr, 0, 1);
|
||||
SV_BroadcastPrintf ("%s", s);
|
||||
}
|
||||
|
||||
|
@ -307,7 +307,7 @@ PF_sprint (progs_t *pr)
|
|||
unsigned entnum;
|
||||
|
||||
entnum = P_EDICTNUM (pr, 0);
|
||||
s = PF_VarString (pr, 1);
|
||||
s = PF_VarString (pr, 1, 2);
|
||||
|
||||
if (entnum < 1 || entnum > svs.maxclients) {
|
||||
Sys_Printf ("tried to sprint to a non-client\n");
|
||||
|
@ -336,7 +336,7 @@ PF_centerprint (progs_t *pr)
|
|||
unsigned entnum;
|
||||
|
||||
entnum = P_EDICTNUM (pr, 0);
|
||||
s = PF_VarString (pr, 1);
|
||||
s = PF_VarString (pr, 1, 2);
|
||||
|
||||
if (entnum < 1 || entnum > svs.maxclients) {
|
||||
Sys_Printf ("tried to sprint to a non-client\n");
|
||||
|
|
|
@ -73,7 +73,7 @@ PF_error (progs_t *pr)
|
|||
const char *s;
|
||||
edict_t *ed;
|
||||
|
||||
s = PF_VarString (pr, 0);
|
||||
s = PF_VarString (pr, 0, 1);
|
||||
Sys_Printf ("======SERVER ERROR in %s:\n%s\n",
|
||||
PR_GetString (pr, pr->pr_xfunction->descriptor->name), s);
|
||||
ed = PROG_TO_EDICT (pr, *sv_globals.self);
|
||||
|
@ -97,7 +97,7 @@ PF_objerror (progs_t *pr)
|
|||
const char *s;
|
||||
edict_t *ed;
|
||||
|
||||
s = PF_VarString (pr, 0);
|
||||
s = PF_VarString (pr, 0, 1);
|
||||
Sys_Printf ("======OBJECT ERROR in %s:\n%s\n",
|
||||
PR_GetString (pr, pr->pr_xfunction->descriptor->name), s);
|
||||
ed = PROG_TO_EDICT (pr, *sv_globals.self);
|
||||
|
@ -222,7 +222,7 @@ PF_bprint (progs_t *pr)
|
|||
|
||||
level = P_FLOAT (pr, 0);
|
||||
|
||||
s = PF_VarString (pr, 1);
|
||||
s = PF_VarString (pr, 1, 2);
|
||||
SV_BroadcastPrintf (level, "%s", s);
|
||||
}
|
||||
|
||||
|
@ -254,7 +254,7 @@ PF_sprint (progs_t *pr)
|
|||
if (client->state == cs_server) //FIXME record to mvd?
|
||||
return;
|
||||
|
||||
s = PF_VarString (pr, 2);
|
||||
s = PF_VarString (pr, 2, 3);
|
||||
|
||||
SV_ClientPrintf (1, client, level, "%s", s);
|
||||
}
|
||||
|
@ -286,7 +286,7 @@ PF_centerprint (progs_t *pr)
|
|||
if (cl->state == cs_server) //FIXME record to mvd?
|
||||
return;
|
||||
|
||||
s = PF_VarString (pr, 1);
|
||||
s = PF_VarString (pr, 1, 2);
|
||||
|
||||
MSG_ReliableWrite_Begin (&cl->backbuf, svc_centerprint, 2 + strlen (s));
|
||||
MSG_ReliableWrite_String (&cl->backbuf, s);
|
||||
|
|
|
@ -190,7 +190,7 @@ PF_substr (progs_t *pr)
|
|||
static void
|
||||
PF_strcat (progs_t *pr)
|
||||
{
|
||||
RETURN_STRING (pr, PF_VarString (pr, 0));
|
||||
RETURN_STRING (pr, PF_VarString (pr, 0, pr->pr_argc));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -454,7 +454,7 @@ PF_log (progs_t *pr)
|
|||
name = va (0, "%s/%s.log", qfs_gamedir->dir.def, P_GSTRING (pr, 0));
|
||||
file = QFS_Open (name, "a");
|
||||
|
||||
text = PF_VarString (pr, 2);
|
||||
text = PF_VarString (pr, 2, pr->pr_argc);
|
||||
clean_text (text);
|
||||
|
||||
if (P_FLOAT (pr, 1))
|
||||
|
@ -475,7 +475,7 @@ PF_log (progs_t *pr)
|
|||
static void
|
||||
PF_conprint (progs_t *pr)
|
||||
{
|
||||
Sys_Printf ("%s", PF_VarString (pr, 0));
|
||||
Sys_Printf ("%s", PF_VarString (pr, 0, pr->pr_argc));
|
||||
}
|
||||
|
||||
#define QWE (PR_RANGE_QWE << PR_RANGE_SHIFT) |
|
||||
|
|
Loading…
Reference in a new issue