[util] Make va thread-safe
It now takes a context pointer (opaque data) that holds the buffers it uses for the temporary strings. If the context pointer is null, a static context is used (making those uses of va NOT thread-safe). Most calls to va use the static context, but all such calls have been formatted consistently so they are easy to find when it comes time to do a full audit.
This commit is contained in:
parent
f523f6ba80
commit
7970525ef4
|
@ -34,9 +34,60 @@
|
||||||
*/
|
*/
|
||||||
///@{
|
///@{
|
||||||
|
|
||||||
// does a varargs printf into a temp buffer
|
/** Opaque context for va so it can have per-thread data.
|
||||||
char *va(const char *format, ...) __attribute__((format(printf,1,2)));
|
*/
|
||||||
// does a varargs printf into a malloced buffer
|
typedef struct va_ctx_s va_ctx_t;
|
||||||
|
|
||||||
|
/** Create a va context with the specified number of buffers.
|
||||||
|
*
|
||||||
|
* Having multiple buffers allows va to be used in short chains.
|
||||||
|
*
|
||||||
|
* \param buffers The number of buffers to create in the context. va() will
|
||||||
|
* cycle through the buffers for each call.
|
||||||
|
* \return Pointer to the context. Pass to va() for thread-safe usage.
|
||||||
|
*/
|
||||||
|
va_ctx_t *va_create_context (int buffers);
|
||||||
|
|
||||||
|
/** Destroy a va context.
|
||||||
|
*
|
||||||
|
* \param ctx The context to be destroyed. Must have been created by
|
||||||
|
* va_create_context().
|
||||||
|
* \note Any pointers to strings returned by va() using the context
|
||||||
|
* referenced by \a ctx will become invalid as the backing
|
||||||
|
* memory for the strings will have been freed.
|
||||||
|
*/
|
||||||
|
void va_destroy_context (va_ctx_t *ctx);
|
||||||
|
|
||||||
|
/** Does a varargs printf into a private buffer.
|
||||||
|
*
|
||||||
|
* \param ctx Context used for storing the private buffer such that va
|
||||||
|
* can be used in a multi-threaded environment. If null then
|
||||||
|
* a static context is used, in which case va is NOT
|
||||||
|
* thread-safe.
|
||||||
|
* \param format Standard printf() format string.
|
||||||
|
* \return Pointer to the beginning of the output string. The memory
|
||||||
|
* for the returned string is owned by the context pointed to
|
||||||
|
* by \a ctx.
|
||||||
|
* \note The static context is created with 4 buffers, so va (0,...)
|
||||||
|
* can be used to produce mildly complex output (eg, 3 calls
|
||||||
|
* to va sent to a 4th) with a reduced risk of strings being
|
||||||
|
* trampled.
|
||||||
|
*/
|
||||||
|
char *va(va_ctx_t *ctx, const char *format, ...) __attribute__((format(printf,2,3)));
|
||||||
|
|
||||||
|
/** Does a varargs printf into a malloced buffer.
|
||||||
|
*
|
||||||
|
* Combines the effect of strdup and sprintf, but in a safe manner. Essentially
|
||||||
|
* the equivalent of strdup (va (ctx, format, ...));
|
||||||
|
*
|
||||||
|
* \param format Standard printf() format string.
|
||||||
|
* \return Pointer to the beginning of the output string. The caller
|
||||||
|
* is responsible for freeing the memory holding the string.
|
||||||
|
* \note As nva() creates a new buffer every time it is called, it
|
||||||
|
* is thread-safe and there is no risk of the string being
|
||||||
|
* trampled. In addition, it does not use va(), so combining
|
||||||
|
* nva() with va() is safe.
|
||||||
|
*/
|
||||||
char *nva(const char *format, ...) __attribute__((format(printf,1,2)));
|
char *nva(const char *format, ...) __attribute__((format(printf,1,2)));
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
|
@ -50,6 +50,7 @@ typedef struct vulkan_ctx_s {
|
||||||
void (*create_window) (struct vulkan_ctx_s *ctx);
|
void (*create_window) (struct vulkan_ctx_s *ctx);
|
||||||
VkSurfaceKHR (*create_surface) (struct vulkan_ctx_s *ctx);
|
VkSurfaceKHR (*create_surface) (struct vulkan_ctx_s *ctx);
|
||||||
|
|
||||||
|
struct va_ctx_s *va_ctx;
|
||||||
struct qfv_instance_s *instance;
|
struct qfv_instance_s *instance;
|
||||||
struct qfv_device_s *device;
|
struct qfv_device_s *device;
|
||||||
struct qfv_swapchain_s *swapchain;
|
struct qfv_swapchain_s *swapchain;
|
||||||
|
|
|
@ -189,7 +189,7 @@ Load_Tracklist (void)
|
||||||
static void
|
static void
|
||||||
I_OGGMus_SetPlayList (int track)
|
I_OGGMus_SetPlayList (int track)
|
||||||
{
|
{
|
||||||
const char *trackstring = va ("%i", track);
|
const char *trackstring = va (0, "%i", track);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
play_list = PL_ObjectForKey (tracklist, trackstring);
|
play_list = PL_ObjectForKey (tracklist, trackstring);
|
||||||
|
@ -327,7 +327,7 @@ I_OGGMus_Info (void)
|
||||||
|
|
||||||
/* loop, and count up the Highest key number. */
|
/* loop, and count up the Highest key number. */
|
||||||
for (iter = 1, count = 0; count < keycount && iter <= 99 ; iter++) {
|
for (iter = 1, count = 0; count < keycount && iter <= 99 ; iter++) {
|
||||||
trackstring = va ("%i", iter);
|
trackstring = va (0, "%i", iter);
|
||||||
if (!(currenttrack = PL_ObjectForKey (tracklist, trackstring))) {
|
if (!(currenttrack = PL_ObjectForKey (tracklist, trackstring))) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -329,7 +329,7 @@ s_jack_connect (void)
|
||||||
jack_set_process_callback (jack_handle, snd_jack_process, 0);
|
jack_set_process_callback (jack_handle, snd_jack_process, 0);
|
||||||
jack_on_shutdown (jack_handle, snd_jack_shutdown, 0);
|
jack_on_shutdown (jack_handle, snd_jack_shutdown, 0);
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
jack_out[i] = jack_port_register (jack_handle, va ("out_%d", i + 1),
|
jack_out[i] = jack_port_register (jack_handle, va (0, "out_%d", i + 1),
|
||||||
JACK_DEFAULT_AUDIO_TYPE,
|
JACK_DEFAULT_AUDIO_TYPE,
|
||||||
JackPortIsOutput, 0);
|
JackPortIsOutput, 0);
|
||||||
snd_shm->speed = jack_get_sample_rate (jack_handle);
|
snd_shm->speed = jack_get_sample_rate (jack_handle);
|
||||||
|
|
|
@ -199,7 +199,7 @@ SND_PrecacheSound (const char *name)
|
||||||
if (!name)
|
if (!name)
|
||||||
Sys_Error ("SND_PrecacheSound: NULL");
|
Sys_Error ("SND_PrecacheSound: NULL");
|
||||||
|
|
||||||
sfx = SND_LoadSound (va ("sound/%s", name));
|
sfx = SND_LoadSound (va (0, "sound/%s", name));
|
||||||
if (sfx && precache->int_val) {
|
if (sfx && precache->int_val) {
|
||||||
if (sfx->retain (sfx))
|
if (sfx->retain (sfx))
|
||||||
sfx->release (sfx);
|
sfx->release (sfx);
|
||||||
|
|
|
@ -251,7 +251,7 @@ Condump_f (void)
|
||||||
Sys_Printf ("invalid character in filename\n");
|
Sys_Printf ("invalid character in filename\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
name = va ("%s/%s.txt", qfs_gamedir->dir.def, Cmd_Argv (1));
|
name = va (0, "%s/%s.txt", qfs_gamedir->dir.def, Cmd_Argv (1));//FIXME
|
||||||
|
|
||||||
if (!(file = QFS_WOpen (name, 0))) {
|
if (!(file = QFS_WOpen (name, 0))) {
|
||||||
Sys_Printf ("could not open %s for writing: %s\n", name,
|
Sys_Printf ("could not open %s for writing: %s\n", name,
|
||||||
|
@ -375,7 +375,7 @@ C_Print (const char *fmt, va_list args)
|
||||||
|
|
||||||
// log all messages to file
|
// log all messages to file
|
||||||
if (con_debuglog)
|
if (con_debuglog)
|
||||||
Sys_DebugLog (va ("%s/%s/qconsole.log", qfs_userpath,
|
Sys_DebugLog (va (0, "%s/%s/qconsole.log", qfs_userpath,//FIXME
|
||||||
qfs_gamedir->dir.def), "%s", buffer->str);
|
qfs_gamedir->dir.def), "%s", buffer->str);
|
||||||
|
|
||||||
if (!con_initialized)
|
if (!con_initialized)
|
||||||
|
|
|
@ -157,7 +157,7 @@ Con_BasicCompleteCommandLine (inputline_t *il)
|
||||||
&& strncmp (s + bound, cmd, strlen (s + bound)))
|
&& strncmp (s + bound, cmd, strlen (s + bound)))
|
||||||
bound++;
|
bound++;
|
||||||
|
|
||||||
overwrite = va("%.*s%.*s", bound, s, cmd_len, cmd);
|
overwrite = va (0, "%.*s%.*s", bound, s, cmd_len, cmd);
|
||||||
|
|
||||||
il->lines[il->edit_line][1] = '/';
|
il->lines[il->edit_line][1] = '/';
|
||||||
strncpy (il->lines[il->edit_line] + 2, overwrite, il->line_size - 3);
|
strncpy (il->lines[il->edit_line] + 2, overwrite, il->line_size - 3);
|
||||||
|
|
|
@ -167,7 +167,7 @@ Con_Skyboxlist_f (void)
|
||||||
for (j = 1; sb_endings[j]; j++) {
|
for (j = 1; sb_endings[j]; j++) {
|
||||||
b = 0;
|
b = 0;
|
||||||
for (k = 0; k < skyboxlist->count; k++) {
|
for (k = 0; k < skyboxlist->count; k++) {
|
||||||
if (strcmp(va("%s%s", basename->str, sb_endings[j]),
|
if (strcmp(va (0, "%s%s", basename->str, sb_endings[j]),
|
||||||
skyboxlist->list[k]) == 0) {
|
skyboxlist->list[k]) == 0) {
|
||||||
b = 1;
|
b = 1;
|
||||||
*skyboxlist->list[k] = 0;
|
*skyboxlist->list[k] = 0;
|
||||||
|
|
|
@ -311,7 +311,7 @@ EXP_ParseString (char *str)
|
||||||
} else {
|
} else {
|
||||||
EXP_DestroyTokens (chain);
|
EXP_DestroyTokens (chain);
|
||||||
EXP_Error (EXP_E_INVOP,
|
EXP_Error (EXP_E_INVOP,
|
||||||
va ("Unknown operator or function '%s'.", buf));
|
va (0, "Unknown operator or function '%s'.", buf));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -347,8 +347,7 @@ EXP_SimplifyTokens (token * chain)
|
||||||
cur = cur->generic.prev;
|
cur = cur->generic.prev;
|
||||||
if (EXP_DoFunction (cur))
|
if (EXP_DoFunction (cur))
|
||||||
return EXP_Error (EXP_E_SYNTAX,
|
return EXP_Error (EXP_E_SYNTAX,
|
||||||
va
|
va (0, "Invalid number of arguments to function '%s'.",
|
||||||
("Invalid number of arguments to function '%s'.",
|
|
||||||
cur->func.func->str));
|
cur->func.func->str));
|
||||||
} else {
|
} else {
|
||||||
if (EXP_ContainsCommas (cur))
|
if (EXP_ContainsCommas (cur))
|
||||||
|
@ -374,8 +373,7 @@ EXP_SimplifyTokens (token * chain)
|
||||||
if (cur->generic.next->generic.type == TOKEN_OP)
|
if (cur->generic.next->generic.type == TOKEN_OP)
|
||||||
if (EXP_DoUnary (cur->generic.next))
|
if (EXP_DoUnary (cur->generic.next))
|
||||||
return EXP_Error (EXP_E_SYNTAX,
|
return EXP_Error (EXP_E_SYNTAX,
|
||||||
va
|
va (0, "Unary operator '%s' not followed by a unary operator or numerical value.",
|
||||||
("Unary operator '%s' not followed by a unary operator or numerical value.",
|
|
||||||
cur->generic.next->op.op->str));
|
cur->generic.next->op.op->str));
|
||||||
if (optable[i].operands == 1
|
if (optable[i].operands == 1
|
||||||
&& cur->generic.next->generic.type == TOKEN_NUM) {
|
&& cur->generic.next->generic.type == TOKEN_NUM) {
|
||||||
|
@ -482,14 +480,12 @@ EXP_Validate (token * chain)
|
||||||
cur->generic.next->op.op = EXP_FindOpByStr ("neg");
|
cur->generic.next->op.op = EXP_FindOpByStr ("neg");
|
||||||
else if (cur->generic.next->op.op->operands == 2)
|
else if (cur->generic.next->op.op->operands == 2)
|
||||||
return EXP_Error (EXP_E_SYNTAX,
|
return EXP_Error (EXP_E_SYNTAX,
|
||||||
va
|
va (0, "Operator '%s' does not follow a number or numerical value.",
|
||||||
("Operator '%s' does not follow a number or numerical value.",
|
|
||||||
cur->generic.next->op.op->str));
|
cur->generic.next->op.op->str));
|
||||||
} else if (cur->generic.type == TOKEN_FUNC
|
} else if (cur->generic.type == TOKEN_FUNC
|
||||||
&& cur->generic.next->generic.type != TOKEN_OPAREN)
|
&& cur->generic.next->generic.type != TOKEN_OPAREN)
|
||||||
return EXP_Error (EXP_E_SYNTAX,
|
return EXP_Error (EXP_E_SYNTAX,
|
||||||
va
|
va (0, "Function '%s' called without an argument list.",
|
||||||
("Function '%s' called without an argument list.",
|
|
||||||
cur->func.func->str));
|
cur->func.func->str));
|
||||||
else if (cur->generic.type == TOKEN_COMMA
|
else if (cur->generic.type == TOKEN_COMMA
|
||||||
&&
|
&&
|
||||||
|
@ -501,7 +497,7 @@ EXP_Validate (token * chain)
|
||||||
else if (cur->generic.type == TOKEN_OP
|
else if (cur->generic.type == TOKEN_OP
|
||||||
&& cur->generic.next->generic.type == TOKEN_CPAREN)
|
&& cur->generic.next->generic.type == TOKEN_CPAREN)
|
||||||
return EXP_Error (EXP_E_SYNTAX,
|
return EXP_Error (EXP_E_SYNTAX,
|
||||||
va ("Operator '%s' is missing an operand.",
|
va (0, "Operator '%s' is missing an operand.",
|
||||||
cur->op.op->str));
|
cur->op.op->str));
|
||||||
else if (cur->generic.type == TOKEN_NUM
|
else if (cur->generic.type == TOKEN_NUM
|
||||||
&& cur->generic.next->generic.type == TOKEN_NUM)
|
&& cur->generic.next->generic.type == TOKEN_NUM)
|
||||||
|
|
|
@ -823,7 +823,7 @@ GIB_File_Write_f (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
path = GIB_Argv (1);
|
path = GIB_Argv (1);
|
||||||
QFS_WriteFile (va ("%s/%s", qfs_gamedir->dir.def, path),
|
QFS_WriteFile (va (0, "%s/%s", qfs_gamedir->dir.def, path),
|
||||||
GIB_Argv(2), GIB_Argd(2)->size-1);
|
GIB_Argv(2), GIB_Argd(2)->size-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -612,9 +612,9 @@ static const char *g_gcbs_name;
|
||||||
static const char *gcbs_fname (const char *str)
|
static const char *gcbs_fname (const char *str)
|
||||||
{
|
{
|
||||||
if (g_gcbs_mode == INSTANCE)
|
if (g_gcbs_mode == INSTANCE)
|
||||||
return va ("__%s_%s__", g_gcbs_name, str);
|
return va (0, "__%s_%s__", g_gcbs_name, str);
|
||||||
else
|
else
|
||||||
return va ("%s::%s", g_gcbs_name, str);
|
return va (0, "%s::%s", g_gcbs_name, str);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -205,7 +205,7 @@ GIB_Object_Create (const char *classname, qboolean classobj)
|
||||||
obj->data = malloc (sizeof (void *) * (class->depth+1));
|
obj->data = malloc (sizeof (void *) * (class->depth+1));
|
||||||
obj->methods = classobj ? class->class_methods : class->methods;
|
obj->methods = classobj ? class->class_methods : class->methods;
|
||||||
obj->handle = classobj ? 0 : GIB_Handle_New (obj);
|
obj->handle = classobj ? 0 : GIB_Handle_New (obj);
|
||||||
obj->handstr = strdup (va ("%lu", obj->handle));
|
obj->handstr = strdup (va (0, "%lu", obj->handle));
|
||||||
obj->refs = 1;
|
obj->refs = 1;
|
||||||
obj->signals = Hash_NewTable (128, GIB_Signal_Get_Key,
|
obj->signals = Hash_NewTable (128, GIB_Signal_Get_Key,
|
||||||
GIB_Signal_Free, NULL, 0);
|
GIB_Signal_Free, NULL, 0);
|
||||||
|
|
|
@ -333,7 +333,8 @@ GIB_Parse_Tokens (const char *program, unsigned int *i, unsigned int pofs)
|
||||||
return nodes;
|
return nodes;
|
||||||
ERROR:
|
ERROR:
|
||||||
if (c)
|
if (c)
|
||||||
GIB_Parse_Error (va ("Could not find match for '%c'.", c), *i + pofs);
|
GIB_Parse_Error (va (0, "Could not find match for '%c'.", c),
|
||||||
|
*i + pofs);
|
||||||
if (nodes)
|
if (nodes)
|
||||||
GIB_Tree_Unref (&nodes);
|
GIB_Tree_Unref (&nodes);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -496,7 +497,8 @@ GIB_Parse_Embedded (gib_tree_t *token)
|
||||||
return lines;
|
return lines;
|
||||||
ERROR:
|
ERROR:
|
||||||
if (c)
|
if (c)
|
||||||
GIB_Parse_Error (va ("Could not find match for '%c'.", c), i + token->start);
|
GIB_Parse_Error (va (0, "Could not find match for '%c'.", c),
|
||||||
|
i + token->start);
|
||||||
if (lines)
|
if (lines)
|
||||||
GIB_Tree_Unref (&lines);
|
GIB_Tree_Unref (&lines);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -210,7 +210,7 @@ GIB_Var_Get_Very_Complex (hashtab_t ** first, hashtab_t ** second, dstring_t *ke
|
||||||
key->str[i] = 0;
|
key->str[i] = 0;
|
||||||
if ((var = GIB_Var_Get_Very_Complex (&one, &two, key, n+1+varstartskip, &index2, create))) {
|
if ((var = GIB_Var_Get_Very_Complex (&one, &two, key, n+1+varstartskip, &index2, create))) {
|
||||||
if (key->str[n] == '#')
|
if (key->str[n] == '#')
|
||||||
str = va("%u", var->size);
|
str = va (0, "%u", var->size);
|
||||||
else
|
else
|
||||||
str = var->array[index2].value->str;
|
str = var->array[index2].value->str;
|
||||||
key->str[i] = c;
|
key->str[i] = c;
|
||||||
|
|
|
@ -122,7 +122,7 @@ Mod_LoadExternalSkin (maliasskindesc_t *pskindesc, char *filename)
|
||||||
|
|
||||||
tex = LoadImage (filename, 1);
|
tex = LoadImage (filename, 1);
|
||||||
if (!tex)
|
if (!tex)
|
||||||
tex = LoadImage (va ("textures/%s", ptr + 1), 1);
|
tex = LoadImage (va (0, "textures/%s", ptr + 1), 1);
|
||||||
if (tex) {
|
if (tex) {
|
||||||
pskindesc->texnum = GL_LoadTexture (filename, tex->width, tex->height,
|
pskindesc->texnum = GL_LoadTexture (filename, tex->width, tex->height,
|
||||||
tex->data, true, false,
|
tex->data, true, false,
|
||||||
|
@ -130,22 +130,22 @@ Mod_LoadExternalSkin (maliasskindesc_t *pskindesc, char *filename)
|
||||||
|
|
||||||
pskindesc->fb_texnum = 0;
|
pskindesc->fb_texnum = 0;
|
||||||
|
|
||||||
glow = LoadImage (va ("%s_luma", filename), 1);
|
glow = LoadImage (va (0, "%s_luma", filename), 1);
|
||||||
if (!glow)
|
if (!glow)
|
||||||
glow = LoadImage (va ("%s_glow", filename), 1);
|
glow = LoadImage (va (0, "%s_glow", filename), 1);
|
||||||
if (!glow)
|
if (!glow)
|
||||||
glow = LoadImage (va ("textures/%s_luma", ptr + 1), 1);
|
glow = LoadImage (va (0, "textures/%s_luma", ptr + 1), 1);
|
||||||
if (!glow)
|
if (!glow)
|
||||||
glow = LoadImage (va ("textures/%s_glow", ptr + 1), 1);
|
glow = LoadImage (va (0, "textures/%s_glow", ptr + 1), 1);
|
||||||
if (glow)
|
if (glow)
|
||||||
pskindesc->fb_texnum =
|
pskindesc->fb_texnum =
|
||||||
GL_LoadTexture (va ("fb_%s", filename), glow->width,
|
GL_LoadTexture (va (0, "fb_%s", filename), glow->width,
|
||||||
glow->height, glow->data, true, true,
|
glow->height, glow->data, true, true,
|
||||||
glow->format > 2 ? glow->format : 1);
|
glow->format > 2 ? glow->format : 1);
|
||||||
else if (tex->format < 3)
|
else if (tex->format < 3)
|
||||||
pskindesc->fb_texnum = Mod_Fullbright (tex->data, tex->width,
|
pskindesc->fb_texnum = Mod_Fullbright (tex->data, tex->width,
|
||||||
tex->height,
|
tex->height,
|
||||||
va ("fb_%s", filename));
|
va (0, "fb_%s", filename));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -104,9 +104,9 @@ glsl_Mod_LoadSkin (byte *skin, int skinsize, int snum, int gnum,
|
||||||
memcpy (tskin, skin, skinsize);
|
memcpy (tskin, skin, skinsize);
|
||||||
Mod_FloodFillSkin (tskin, w, h);
|
Mod_FloodFillSkin (tskin, w, h);
|
||||||
if (group)
|
if (group)
|
||||||
name = va ("%s_%i_%i", loadmodel->name, snum, gnum);
|
name = va (0, "%s_%i_%i", loadmodel->name, snum, gnum);
|
||||||
else
|
else
|
||||||
name = va ("%s_%i", loadmodel->name, snum);
|
name = va (0, "%s_%i", loadmodel->name, snum);
|
||||||
skindesc->texnum = GLSL_LoadQuakeTexture (name, w, h, tskin);
|
skindesc->texnum = GLSL_LoadQuakeTexture (name, w, h, tskin);
|
||||||
free (tskin);
|
free (tskin);
|
||||||
return skin + skinsize;
|
return skin + skinsize;
|
||||||
|
|
|
@ -128,19 +128,28 @@ Vulkan_Mod_LoadSkin (byte *skinpix, int skinsize, int snum, int gnum,
|
||||||
|
|
||||||
tex_t skin_tex = {w, h, tex_palette, 1, vid.palette, tskin + skinsize};
|
tex_t skin_tex = {w, h, tex_palette, 1, vid.palette, tskin + skinsize};
|
||||||
if (Mod_CalcFullbright (tskin, tskin + skinsize, skinsize)) {
|
if (Mod_CalcFullbright (tskin, tskin + skinsize, skinsize)) {
|
||||||
skin->glow = Vulkan_LoadTex (ctx, &skin_tex, 1);
|
skin->glow = Vulkan_LoadTex (ctx, &skin_tex, 1,
|
||||||
|
va (ctx->va_ctx, "%s:%d:%d:glow",
|
||||||
|
loadmodel->name, snum, gnum));
|
||||||
Mod_ClearFullbright (tskin, tskin, skinsize);
|
Mod_ClearFullbright (tskin, tskin, skinsize);
|
||||||
}
|
}
|
||||||
if (Skin_CalcTopColors (tskin, tskin + skinsize, skinsize)) {
|
if (Skin_CalcTopColors (tskin, tskin + skinsize, skinsize)) {
|
||||||
skin->colora = Vulkan_LoadTex (ctx, &skin_tex, 1);
|
skin->colora = Vulkan_LoadTex (ctx, &skin_tex, 1,
|
||||||
|
va (ctx->va_ctx, "%s:%d:%d:colora",
|
||||||
|
loadmodel->name, snum, gnum));
|
||||||
Skin_ClearTopColors (tskin, tskin, skinsize);
|
Skin_ClearTopColors (tskin, tskin, skinsize);
|
||||||
}
|
}
|
||||||
if (Skin_CalcBottomColors (tskin, tskin + skinsize, skinsize)) {
|
if (Skin_CalcBottomColors (tskin, tskin + skinsize, skinsize)) {
|
||||||
skin->colorb = Vulkan_LoadTex (ctx, &skin_tex, 1);
|
skin->colorb = Vulkan_LoadTex (ctx, &skin_tex, 1,
|
||||||
|
va (ctx->va_ctx, "%s:%d:%d:colorb",
|
||||||
|
loadmodel->name, snum, gnum));
|
||||||
Skin_ClearBottomColors (tskin, tskin, skinsize);
|
Skin_ClearBottomColors (tskin, tskin, skinsize);
|
||||||
}
|
}
|
||||||
skin_tex.data = tskin;
|
skin_tex.data = tskin;
|
||||||
skin->tex = Vulkan_LoadTex (ctx, &skin_tex, 1);
|
skin->tex = Vulkan_LoadTex (ctx, &skin_tex, 1,
|
||||||
|
va (ctx->va_ctx, "%s:%d:%d:tex",
|
||||||
|
loadmodel->name,
|
||||||
|
snum, gnum));
|
||||||
|
|
||||||
free (tskin);
|
free (tskin);
|
||||||
|
|
||||||
|
|
|
@ -63,17 +63,17 @@ Mod_LoadAnExternalTexture (char *tname, char *mname)
|
||||||
|
|
||||||
if (rname[0] == '*') rname[0] = '#';
|
if (rname[0] == '*') rname[0] = '#';
|
||||||
|
|
||||||
image = LoadImage (va ("textures/%.*s/%s", (int) strlen (mname + 5) - 4,
|
image = LoadImage (va (0, "textures/%.*s/%s", (int) strlen (mname + 5) - 4,
|
||||||
mname + 5, rname), 1);
|
mname + 5, rname), 1);
|
||||||
if (!image)
|
if (!image)
|
||||||
image = LoadImage (va ("maps/%.*s/%s", (int) strlen (mname + 5) - 4,
|
image = LoadImage (va (0, "maps/%.*s/%s", (int) strlen (mname + 5) - 4,
|
||||||
mname + 5, rname), 1);
|
mname + 5, rname), 1);
|
||||||
// if (!image)
|
// if (!image)
|
||||||
// image = LoadImage (va ("textures/bmodels/%s", rname));
|
// image = LoadImage (va (0, "textures/bmodels/%s", rname));
|
||||||
if (!image)
|
if (!image)
|
||||||
image = LoadImage (va ("textures/%s", rname), 1);
|
image = LoadImage (va (0, "textures/%s", rname), 1);
|
||||||
if (!image)
|
if (!image)
|
||||||
image = LoadImage (va ("maps/%s", rname), 1);
|
image = LoadImage (va (0, "maps/%s", rname), 1);
|
||||||
|
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
@ -93,23 +93,23 @@ Mod_LoadExternalTextures (model_t *mod, texture_t *tx)
|
||||||
base->data, true, false,
|
base->data, true, false,
|
||||||
base->format > 2 ? base->format : 1);
|
base->format > 2 ? base->format : 1);
|
||||||
|
|
||||||
luma = Mod_LoadAnExternalTexture (va ("%s_luma", tx->name),
|
luma = Mod_LoadAnExternalTexture (va (0, "%s_luma", tx->name),
|
||||||
mod->name);
|
mod->name);
|
||||||
if (!luma)
|
if (!luma)
|
||||||
luma = Mod_LoadAnExternalTexture (va ("%s_glow", tx->name),
|
luma = Mod_LoadAnExternalTexture (va (0, "%s_glow", tx->name),
|
||||||
mod->name);
|
mod->name);
|
||||||
|
|
||||||
gltx->gl_fb_texturenum = 0;
|
gltx->gl_fb_texturenum = 0;
|
||||||
|
|
||||||
if (luma) {
|
if (luma) {
|
||||||
gltx->gl_fb_texturenum =
|
gltx->gl_fb_texturenum =
|
||||||
GL_LoadTexture (va ("fb_%s", tx->name), luma->width,
|
GL_LoadTexture (va (0, "fb_%s", tx->name), luma->width,
|
||||||
luma->height, luma->data, true, true,
|
luma->height, luma->data, true, true,
|
||||||
luma->format > 2 ? luma->format : 1);
|
luma->format > 2 ? luma->format : 1);
|
||||||
} else if (base->format < 3) {
|
} else if (base->format < 3) {
|
||||||
gltx->gl_fb_texturenum =
|
gltx->gl_fb_texturenum =
|
||||||
Mod_Fullbright (base->data, base->width, base->height,
|
Mod_Fullbright (base->data, base->width, base->height,
|
||||||
va ("fb_%s", tx->name));
|
va (0, "fb_%s", tx->name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return external;
|
return external;
|
||||||
|
@ -133,7 +133,7 @@ gl_Mod_ProcessTexture (texture_t *tx)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
gltex_t *gltex = tx->render;
|
gltex_t *gltex = tx->render;
|
||||||
name = va ("fb_%s", tx->name);
|
name = va (0, "fb_%s", tx->name);
|
||||||
gltex->gl_fb_texturenum =
|
gltex->gl_fb_texturenum =
|
||||||
Mod_Fullbright ((byte *) (tx + 1), tx->width, tx->height, name);
|
Mod_Fullbright ((byte *) (tx + 1), tx->width, tx->height, name);
|
||||||
gltex->gl_texturenum =
|
gltex->gl_texturenum =
|
||||||
|
|
|
@ -356,7 +356,7 @@ Vulkan_Mod_ProcessTexture (texture_t *tx, vulkan_ctx_t *ctx)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *name = va ("fb_%s", tx->name);
|
const char *name = va (ctx->va_ctx, "fb_%s", tx->name);
|
||||||
int size = (tx->width * tx->height * 85) / 64;
|
int size = (tx->width * tx->height * 85) / 64;
|
||||||
int fullbright_mark = Hunk_LowMark ();
|
int fullbright_mark = Hunk_LowMark ();
|
||||||
byte *pixels = Hunk_AllocName (size, name);
|
byte *pixels = Hunk_AllocName (size, name);
|
||||||
|
|
|
@ -80,7 +80,7 @@ gl_iqm_load_textures (iqm_t *iqm)
|
||||||
for (i = 0; i < iqm->num_meshes; i++) {
|
for (i = 0; i < iqm->num_meshes; i++) {
|
||||||
dstring_copystr (str, iqm->text + iqm->meshes[i].material);
|
dstring_copystr (str, iqm->text + iqm->meshes[i].material);
|
||||||
QFS_StripExtension (str->str, str->str);
|
QFS_StripExtension (str->str, str->str);
|
||||||
if ((tex = LoadImage (va ("textures/%s", str->str), 1)))
|
if ((tex = LoadImage (va (0, "textures/%s", str->str), 1)))
|
||||||
gl->textures[i] = GL_LoadTexture (str->str, tex->width,
|
gl->textures[i] = GL_LoadTexture (str->str, tex->width,
|
||||||
tex->height, tex->data, true,
|
tex->height, tex->data, true,
|
||||||
false,
|
false,
|
||||||
|
|
|
@ -102,12 +102,12 @@ glsl_iqm_load_textures (iqm_t *iqm)
|
||||||
for (i = 0; i < iqm->num_meshes; i++) {
|
for (i = 0; i < iqm->num_meshes; i++) {
|
||||||
dstring_copystr (str, iqm->text + iqm->meshes[i].material);
|
dstring_copystr (str, iqm->text + iqm->meshes[i].material);
|
||||||
QFS_StripExtension (str->str, str->str);
|
QFS_StripExtension (str->str, str->str);
|
||||||
if ((tex = LoadImage (va ("textures/%s", str->str), 1)))
|
if ((tex = LoadImage (va (0, "textures/%s", str->str), 1)))
|
||||||
glsl->textures[i] = GLSL_LoadRGBATexture (str->str, tex->width,
|
glsl->textures[i] = GLSL_LoadRGBATexture (str->str, tex->width,
|
||||||
tex->height, tex->data);
|
tex->height, tex->data);
|
||||||
else
|
else
|
||||||
glsl->textures[i] = GLSL_LoadRGBATexture ("", 2, 2, null_texture);
|
glsl->textures[i] = GLSL_LoadRGBATexture ("", 2, 2, null_texture);
|
||||||
if ((tex = LoadImage (va ("textures/%s_norm", str->str), 1)))
|
if ((tex = LoadImage (va (0, "textures/%s_norm", str->str), 1)))
|
||||||
glsl->normmaps[i] = GLSL_LoadRGBATexture (str->str, tex->width,
|
glsl->normmaps[i] = GLSL_LoadRGBATexture (str->str, tex->width,
|
||||||
tex->height, tex->data);
|
tex->height, tex->data);
|
||||||
else
|
else
|
||||||
|
|
|
@ -174,7 +174,7 @@ sw_iqm_load_textures (iqm_t *iqm)
|
||||||
continue;
|
continue;
|
||||||
dstring_copystr (str, iqm->text + iqm->meshes[i].material);
|
dstring_copystr (str, iqm->text + iqm->meshes[i].material);
|
||||||
QFS_StripExtension (str->str, str->str);
|
QFS_StripExtension (str->str, str->str);
|
||||||
if ((tex = LoadImage (va ("textures/%s", str->str), 1)))
|
if ((tex = LoadImage (va (0, "textures/%s", str->str), 1)))
|
||||||
tex = sw->skins[i] = convert_tex (tex);
|
tex = sw->skins[i] = convert_tex (tex);
|
||||||
else
|
else
|
||||||
tex = sw->skins[i] = &null_texture;
|
tex = sw->skins[i] = &null_texture;
|
||||||
|
|
|
@ -177,7 +177,7 @@ Skin_SetSkin (skin_t *skin, int cmap, const char *skinname)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
file = QFS_FOpenFile (va ("skins/%s.pcx", name));
|
file = QFS_FOpenFile (va (0, "skins/%s.pcx", name));
|
||||||
if (!file) {
|
if (!file) {
|
||||||
Sys_Printf ("Couldn't load skin %s\n", name);
|
Sys_Printf ("Couldn't load skin %s\n", name);
|
||||||
free (name);
|
free (name);
|
||||||
|
|
|
@ -49,7 +49,7 @@ gl_Mod_SpriteLoadTexture (mspriteframe_t *pspriteframe, int framenum)
|
||||||
tex_t *targa;
|
tex_t *targa;
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
targa = LoadImage (name = va ("%s_%i", loadmodel->name, framenum), 1);
|
targa = LoadImage (name = va (0, "%s_%i", loadmodel->name, framenum), 1);
|
||||||
if (targa) {
|
if (targa) {
|
||||||
if (targa->format < 4)
|
if (targa->format < 4)
|
||||||
pspriteframe->gl_texturenum = GL_LoadTexture (name,
|
pspriteframe->gl_texturenum = GL_LoadTexture (name,
|
||||||
|
|
|
@ -76,7 +76,7 @@ glsl_Mod_SpriteLoadTexture (mspriteframe_t *pspriteframe, int framenum)
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
loadmodel->clear = glsl_sprite_clear;
|
loadmodel->clear = glsl_sprite_clear;
|
||||||
name = va ("%s_%i", loadmodel->name, framenum);
|
name = va (0, "%s_%i", loadmodel->name, framenum);
|
||||||
pspriteframe->gl_texturenum =
|
pspriteframe->gl_texturenum =
|
||||||
GLSL_LoadQuakeTexture (name, pspriteframe->width, pspriteframe->height,
|
GLSL_LoadQuakeTexture (name, pspriteframe->width, pspriteframe->height,
|
||||||
pspriteframe->pixels);
|
pspriteframe->pixels);
|
||||||
|
|
|
@ -140,7 +140,7 @@ bi_Cvar_SetInteger (progs_t *pr)
|
||||||
if (!var)
|
if (!var)
|
||||||
var = Cvar_FindAlias (varname);
|
var = Cvar_FindAlias (varname);
|
||||||
if (var)
|
if (var)
|
||||||
Cvar_Set (var, va ("%d", val));
|
Cvar_Set (var, va (0, "%d", val));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -153,7 +153,7 @@ bi_Cvar_SetFloat (progs_t *pr)
|
||||||
if (!var)
|
if (!var)
|
||||||
var = Cvar_FindAlias (varname);
|
var = Cvar_FindAlias (varname);
|
||||||
if (var)
|
if (var)
|
||||||
Cvar_Set (var, va ("%g", val));
|
Cvar_Set (var, va (0, "%g", val));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -166,7 +166,7 @@ bi_Cvar_SetVector (progs_t *pr)
|
||||||
if (!var)
|
if (!var)
|
||||||
var = Cvar_FindAlias (varname);
|
var = Cvar_FindAlias (varname);
|
||||||
if (var)
|
if (var)
|
||||||
Cvar_Set (var, va ("%g %g %g", val[0], val[1], val[2]));
|
Cvar_Set (var, va (0, "%g %g %g", val[0], val[1], val[2]));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -146,7 +146,8 @@ bi_QFS_WriteFile (progs_t *pr)
|
||||||
int count = P_INT (pr, 2);
|
int count = P_INT (pr, 2);
|
||||||
|
|
||||||
check_buffer (pr, buf, count, "QFS_WriteFile");
|
check_buffer (pr, buf, count, "QFS_WriteFile");
|
||||||
QFS_WriteFile (va ("%s/%s", qfs_gamedir->dir.def, filename), buf, count);
|
QFS_WriteFile (va (0, "%s/%s", qfs_gamedir->dir.def, filename), buf,
|
||||||
|
count);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -284,7 +284,7 @@ Cvar_Set (cvar_t *var, const char *value)
|
||||||
VISIBLE void
|
VISIBLE void
|
||||||
Cvar_SetValue (cvar_t *var, float value)
|
Cvar_SetValue (cvar_t *var, float value)
|
||||||
{
|
{
|
||||||
Cvar_Set (var, va ("%g", value));
|
Cvar_Set (var, va (0, "%g", value));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -608,7 +608,7 @@ Cvar_CvarList_f (void)
|
||||||
showhelp++;
|
showhelp++;
|
||||||
}
|
}
|
||||||
for (var = cvar_vars, i = 0; var; var = var->next, i++) {
|
for (var = cvar_vars, i = 0; var; var = var->next, i++) {
|
||||||
flags = va ("%c%c%c%c",
|
flags = va (0, "%c%c%c%c",
|
||||||
var->flags & CVAR_ROM ? 'r' : ' ',
|
var->flags & CVAR_ROM ? 'r' : ' ',
|
||||||
var->flags & CVAR_ARCHIVE ? '*' : ' ',
|
var->flags & CVAR_ARCHIVE ? '*' : ' ',
|
||||||
var->flags & CVAR_USERINFO ? 'u' : ' ',
|
var->flags & CVAR_USERINFO ? 'u' : ' ',
|
||||||
|
|
|
@ -90,6 +90,7 @@ typedef struct pldata_s { // Unparsed property list string
|
||||||
unsigned pos;
|
unsigned pos;
|
||||||
unsigned line;
|
unsigned line;
|
||||||
plitem_t *error;
|
plitem_t *error;
|
||||||
|
va_ctx_t *va_ctx;
|
||||||
} pldata_t;
|
} pldata_t;
|
||||||
|
|
||||||
// Ugly defines for fast checking and conversion from char to number
|
// Ugly defines for fast checking and conversion from char to number
|
||||||
|
@ -533,7 +534,8 @@ PL_ParseData (pldata_t *pl, int *len)
|
||||||
pl->ptr[start + i * 2 + 1]);
|
pl->ptr[start + i * 2 + 1]);
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
pl->error = PL_NewString (va ("invalid character in data: %02x", c));
|
pl->error = PL_NewString (va (pl->va_ctx,
|
||||||
|
"invalid character in data: %02x", c));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
pl->error = PL_NewString ("Reached end of string while parsing data");
|
pl->error = PL_NewString ("Reached end of string while parsing data");
|
||||||
|
@ -748,7 +750,7 @@ PL_ParsePropertyListItem (pldata_t *pl)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pl->ptr[pl->pos] != '=') {
|
if (pl->ptr[pl->pos] != '=') {
|
||||||
pl->error = PL_NewString (va ("Unexpected character %c (expected '=')", pl->ptr[pl->pos]));
|
pl->error = PL_NewString (va (pl->va_ctx, "Unexpected character %c (expected '=')", pl->ptr[pl->pos]));
|
||||||
PL_Free (key);
|
PL_Free (key);
|
||||||
PL_Free (item);
|
PL_Free (item);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -772,7 +774,7 @@ PL_ParsePropertyListItem (pldata_t *pl)
|
||||||
if (pl->ptr[pl->pos] == ';') {
|
if (pl->ptr[pl->pos] == ';') {
|
||||||
pl->pos++;
|
pl->pos++;
|
||||||
} else if (pl->ptr[pl->pos] != '}') {
|
} else if (pl->ptr[pl->pos] != '}') {
|
||||||
pl->error = PL_NewString (va ("Unexpected character %c (wanted ';' or '}')", pl->ptr[pl->pos]));
|
pl->error = PL_NewString (va (pl->va_ctx, "Unexpected character %c (wanted ';' or '}')", pl->ptr[pl->pos]));
|
||||||
PL_Free (key);
|
PL_Free (key);
|
||||||
PL_Free (value);
|
PL_Free (value);
|
||||||
PL_Free (item);
|
PL_Free (item);
|
||||||
|
@ -822,7 +824,7 @@ PL_ParsePropertyListItem (pldata_t *pl)
|
||||||
if (pl->ptr[pl->pos] == ',') {
|
if (pl->ptr[pl->pos] == ',') {
|
||||||
pl->pos++;
|
pl->pos++;
|
||||||
} else if (pl->ptr[pl->pos] != ')') {
|
} else if (pl->ptr[pl->pos] != ')') {
|
||||||
pl->error = PL_NewString (va ("Unexpected character %c (wanted ',' or ')')", pl->ptr[pl->pos]));
|
pl->error = PL_NewString (va (pl->va_ctx, "Unexpected character %c (wanted ',' or ')')", pl->ptr[pl->pos]));
|
||||||
PL_Free (value);
|
PL_Free (value);
|
||||||
PL_Free (item);
|
PL_Free (item);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -891,8 +893,10 @@ PL_GetPropertyList (const char *string)
|
||||||
pl->end = strlen (string);
|
pl->end = strlen (string);
|
||||||
pl->error = NULL;
|
pl->error = NULL;
|
||||||
pl->line = 1;
|
pl->line = 1;
|
||||||
|
pl->va_ctx = va_create_context (4);
|
||||||
|
|
||||||
if ((newpl = PL_ParsePropertyListItem (pl))) {
|
if ((newpl = PL_ParsePropertyListItem (pl))) {
|
||||||
|
va_destroy_context (pl->va_ctx);
|
||||||
free (pl);
|
free (pl);
|
||||||
return newpl;
|
return newpl;
|
||||||
} else {
|
} else {
|
||||||
|
@ -903,6 +907,7 @@ PL_GetPropertyList (const char *string)
|
||||||
}
|
}
|
||||||
PL_Free (pl->error);
|
PL_Free (pl->error);
|
||||||
}
|
}
|
||||||
|
va_destroy_context (pl->va_ctx);
|
||||||
free (pl);
|
free (pl);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1093,22 +1098,25 @@ VISIBLE void
|
||||||
PL_Message (plitem_t *messages, const plitem_t *item, const char *fmt, ...)
|
PL_Message (plitem_t *messages, const plitem_t *item, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
dstring_t *string;
|
dstring_t *va_str;
|
||||||
|
dstring_t *msg_str;
|
||||||
|
char *msg;
|
||||||
|
|
||||||
string = dstring_new ();
|
va_str = dstring_new ();
|
||||||
|
msg_str = dstring_new ();
|
||||||
|
|
||||||
va_start (args, fmt);
|
va_start (args, fmt);
|
||||||
dvsprintf (string, fmt, args);
|
dvsprintf (va_str, fmt, args);
|
||||||
va_end (args);
|
va_end (args);
|
||||||
|
|
||||||
if (item) {
|
if (item) {
|
||||||
PL_A_AddObject (messages,
|
msg = dsprintf (msg_str, "%d: %s", item->line, va_str->str);
|
||||||
PL_NewString (va ("%d: %s", item->line, string->str)));
|
|
||||||
} else {
|
} else {
|
||||||
PL_A_AddObject (messages,
|
msg = dsprintf (msg_str, "internal: %s", va_str->str);
|
||||||
PL_NewString (va ("internal: %s", string->str)));
|
|
||||||
}
|
}
|
||||||
dstring_delete (string);
|
PL_A_AddObject (messages, PL_NewString (msg));
|
||||||
|
dstring_delete (va_str);
|
||||||
|
dstring_delete (msg_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -359,7 +359,7 @@ qfs_var_subst (const char *string, hashtab_t *vars)
|
||||||
dstring_appendsubstr (new, s, (e - s));
|
dstring_appendsubstr (new, s, (e - s));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
var = va ("%.*s", (int) (e - s) - 1, s + 1);
|
var = va (0, "%.*s", (int) (e - s) - 1, s + 1);
|
||||||
sub = Hash_Find (vars, var);
|
sub = Hash_Find (vars, var);
|
||||||
if (sub)
|
if (sub)
|
||||||
dstring_appendstr (new, sub->val);
|
dstring_appendstr (new, sub->val);
|
||||||
|
@ -370,7 +370,7 @@ qfs_var_subst (const char *string, hashtab_t *vars)
|
||||||
s = e;
|
s = e;
|
||||||
while (qfs_isident (*e))
|
while (qfs_isident (*e))
|
||||||
e++;
|
e++;
|
||||||
var = va ("%.*s", (int) (e - s), s);
|
var = va (0, "%.*s", (int) (e - s), s);
|
||||||
sub = Hash_Find (vars, var);
|
sub = Hash_Find (vars, var);
|
||||||
if (sub)
|
if (sub)
|
||||||
dstring_appendstr (new, sub->val);
|
dstring_appendstr (new, sub->val);
|
||||||
|
@ -588,7 +588,7 @@ qfs_build_gamedir (const char **list)
|
||||||
gamedir = calloc (1, sizeof (gamedir_t));
|
gamedir = calloc (1, sizeof (gamedir_t));
|
||||||
path = dstring_newstr ();
|
path = dstring_newstr ();
|
||||||
while (j--) {
|
while (j--) {
|
||||||
const char *name = va ("%s:%s", qfs_game, dir = list[j]);
|
const char *name = va (0, "%s:%s", qfs_game, dir = list[j]);
|
||||||
if (Hash_Find (dirs, name))
|
if (Hash_Find (dirs, name))
|
||||||
continue;
|
continue;
|
||||||
gdpl = qfs_find_gamedir (name, dirs);
|
gdpl = qfs_find_gamedir (name, dirs);
|
||||||
|
@ -1661,7 +1661,7 @@ QFS_FilelistAdd (filelist_t *filelist, const char *fname, const char *ext)
|
||||||
}
|
}
|
||||||
str = strdup (fname);
|
str = strdup (fname);
|
||||||
|
|
||||||
if (ext && (s = strstr(str, va(".%s", ext))))
|
if (ext && (s = strstr(str, va (0, ".%s", ext))))
|
||||||
*s = 0;
|
*s = 0;
|
||||||
filelist->list[filelist->count++] = str;
|
filelist->list[filelist->count++] = str;
|
||||||
}
|
}
|
||||||
|
@ -1680,9 +1680,9 @@ qfs_filelistfill_do (filelist_t *list, const searchpath_t *search, const char *c
|
||||||
|
|
||||||
for (i = 0; i < pak->numfiles; i++) {
|
for (i = 0; i < pak->numfiles; i++) {
|
||||||
char *name = pak->files[i].name;
|
char *name = pak->files[i].name;
|
||||||
if (!fnmatch (va("%s%s*.%s", cp, separator, ext), name,
|
if (!fnmatch (va (0, "%s%s*.%s", cp, separator, ext), name,
|
||||||
FNM_PATHNAME)
|
FNM_PATHNAME)
|
||||||
|| !fnmatch (va("%s%s*.%s.gz", cp, separator, ext), name,
|
|| !fnmatch (va (0, "%s%s*.%s.gz", cp, separator, ext), name,
|
||||||
FNM_PATHNAME))
|
FNM_PATHNAME))
|
||||||
QFS_FilelistAdd (list, name, strip ? ext : 0);
|
QFS_FilelistAdd (list, name, strip ? ext : 0);
|
||||||
}
|
}
|
||||||
|
@ -1690,12 +1690,12 @@ qfs_filelistfill_do (filelist_t *list, const searchpath_t *search, const char *c
|
||||||
DIR *dir_ptr;
|
DIR *dir_ptr;
|
||||||
struct dirent *dirent;
|
struct dirent *dirent;
|
||||||
|
|
||||||
dir_ptr = opendir (va ("%s/%s", search->filename, cp));
|
dir_ptr = opendir (va (0, "%s/%s", search->filename, cp));
|
||||||
if (!dir_ptr)
|
if (!dir_ptr)
|
||||||
return;
|
return;
|
||||||
while ((dirent = readdir (dir_ptr)))
|
while ((dirent = readdir (dir_ptr)))
|
||||||
if (!fnmatch (va("*.%s", ext), dirent->d_name, 0)
|
if (!fnmatch (va (0, "*.%s", ext), dirent->d_name, 0)
|
||||||
|| !fnmatch (va("*.%s.gz", ext), dirent->d_name, 0))
|
|| !fnmatch (va (0, "*.%s.gz", ext), dirent->d_name, 0))
|
||||||
QFS_FilelistAdd (list, dirent->d_name, strip ? ext : 0);
|
QFS_FilelistAdd (list, dirent->d_name, strip ? ext : 0);
|
||||||
closedir (dir_ptr);
|
closedir (dir_ptr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,28 +40,51 @@
|
||||||
#include "QF/dstring.h"
|
#include "QF/dstring.h"
|
||||||
#include "QF/va.h"
|
#include "QF/va.h"
|
||||||
|
|
||||||
|
struct va_ctx_s {
|
||||||
|
dstring_t **strings;
|
||||||
|
int num_strings;
|
||||||
|
int str_index;
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
VISIBLE va_ctx_t *
|
||||||
va
|
va_create_context (int buffers)
|
||||||
|
|
||||||
does a varargs printf into a temp buffer, so I don't need to have
|
|
||||||
varargs versions of all text functions.
|
|
||||||
*/
|
|
||||||
VISIBLE char *
|
|
||||||
va (const char *fmt, ...)
|
|
||||||
{
|
{
|
||||||
|
va_ctx_t *ctx;
|
||||||
|
|
||||||
|
ctx = malloc (sizeof (va_ctx_t) + buffers * sizeof (dstring_t *));
|
||||||
|
ctx->strings = (dstring_t **) (ctx + 1);
|
||||||
|
ctx->num_strings = buffers;
|
||||||
|
ctx->str_index = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < buffers; i++) {
|
||||||
|
ctx->strings[i] = dstring_new ();
|
||||||
|
}
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
VISIBLE void
|
||||||
|
va_destroy_context (va_ctx_t *ctx)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < ctx->num_strings; i++) {
|
||||||
|
dstring_delete (ctx->strings[i]);
|
||||||
|
}
|
||||||
|
free (ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
VISIBLE char *
|
||||||
|
va (va_ctx_t *ctx, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
static va_ctx_t *_ctx;
|
||||||
va_list args;
|
va_list args;
|
||||||
static dstring_t *string[4];
|
|
||||||
#define NUM_STRINGS (sizeof (string) / sizeof (string[0]))
|
|
||||||
static int str_index;
|
|
||||||
dstring_t *dstr;
|
dstring_t *dstr;
|
||||||
|
|
||||||
if (!string[0]) {
|
if (!ctx) {
|
||||||
for (size_t i = 0; i < NUM_STRINGS; i++) {
|
if (!_ctx) {
|
||||||
string[i] = dstring_new ();
|
_ctx = va_create_context (4);
|
||||||
}
|
}
|
||||||
|
ctx = _ctx;
|
||||||
}
|
}
|
||||||
dstr = string[str_index++ % NUM_STRINGS];
|
dstr = ctx->strings[ctx->str_index++ % ctx->num_strings];
|
||||||
|
|
||||||
va_start (args, fmt);
|
va_start (args, fmt);
|
||||||
dvsprintf (dstr, fmt, args);
|
dvsprintf (dstr, fmt, args);
|
||||||
|
|
|
@ -210,7 +210,7 @@ gl_R_ReadPointFile_f (void)
|
||||||
Sys_Error ("Can't duplicate mapname!");
|
Sys_Error ("Can't duplicate mapname!");
|
||||||
QFS_StripExtension (mapname, mapname);
|
QFS_StripExtension (mapname, mapname);
|
||||||
|
|
||||||
name = va ("%s.pts", mapname);
|
name = va (0, "%s.pts", mapname);
|
||||||
free (mapname);
|
free (mapname);
|
||||||
|
|
||||||
f = QFS_FOpenFile (name);
|
f = QFS_FOpenFile (name);
|
||||||
|
|
|
@ -152,7 +152,7 @@ gl_SCR_ScreenShot_f (void)
|
||||||
|
|
||||||
// find a file name to save it to
|
// find a file name to save it to
|
||||||
if (!QFS_NextFilename (pcxname,
|
if (!QFS_NextFilename (pcxname,
|
||||||
va ("%s/qf", qfs_gamedir->dir.shots), ".tga")) {
|
va (0, "%s/qf", qfs_gamedir->dir.shots), ".tga")) {
|
||||||
Sys_Printf ("SCR_ScreenShot_f: Couldn't create a TGA file\n");
|
Sys_Printf ("SCR_ScreenShot_f: Couldn't create a TGA file\n");
|
||||||
} else {
|
} else {
|
||||||
tex_t *tex;
|
tex_t *tex;
|
||||||
|
|
|
@ -131,11 +131,12 @@ gl_R_LoadSkys (const char *skyname)
|
||||||
|
|
||||||
qfglBindTexture (GL_TEXTURE_2D, SKY_TEX + i);
|
qfglBindTexture (GL_TEXTURE_2D, SKY_TEX + i);
|
||||||
|
|
||||||
targa = LoadImage (name = va ("env/%s%s", skyname, suf[i]), 1);
|
targa = LoadImage (name = va (0, "env/%s%s", skyname, suf[i]), 1);
|
||||||
if (!targa || targa->format < 3) { // FIXME Can't do PCX right now
|
if (!targa || targa->format < 3) { // FIXME Can't do PCX right now
|
||||||
Sys_MaskPrintf (SYS_DEV, "Couldn't load %s\n", name);
|
Sys_MaskPrintf (SYS_DEV, "Couldn't load %s\n", name);
|
||||||
// also look in gfx/env, where Darkplaces looks for skies
|
// also look in gfx/env, where Darkplaces looks for skies
|
||||||
targa = LoadImage (name = va ("gfx/env/%s%s", skyname, suf[i]), 1);
|
targa = LoadImage (name = va (0, "gfx/env/%s%s", skyname,
|
||||||
|
suf[i]), 1);
|
||||||
if (!targa) {
|
if (!targa) {
|
||||||
Sys_MaskPrintf (SYS_DEV, "Couldn't load %s\n", name);
|
Sys_MaskPrintf (SYS_DEV, "Couldn't load %s\n", name);
|
||||||
gl_skyloaded = false;
|
gl_skyloaded = false;
|
||||||
|
|
|
@ -1402,7 +1402,7 @@ glsl_R_LoadSkys (const char *sky)
|
||||||
//blender envmap
|
//blender envmap
|
||||||
// bk rt ft
|
// bk rt ft
|
||||||
// dn up lt
|
// dn up lt
|
||||||
tex = LoadImage (name = va ("env/%s_map", sky), 1);
|
tex = LoadImage (name = va (0, "env/%s_map", sky), 1);
|
||||||
if (tex && tex->format >= 3 && tex->height * 3 == tex->width * 2
|
if (tex && tex->format >= 3 && tex->height * 3 == tex->width * 2
|
||||||
&& is_pow2 (tex->height)) {
|
&& is_pow2 (tex->height)) {
|
||||||
tex_t *sub;
|
tex_t *sub;
|
||||||
|
@ -1430,11 +1430,11 @@ glsl_R_LoadSkys (const char *sky)
|
||||||
} else {
|
} else {
|
||||||
skybox_loaded = true;
|
skybox_loaded = true;
|
||||||
for (i = 0; i < 6; i++) {
|
for (i = 0; i < 6; i++) {
|
||||||
tex = LoadImage (name = va ("env/%s%s", sky, sky_suffix[i]), 1);
|
tex = LoadImage (name = va (0, "env/%s%s", sky, sky_suffix[i]), 1);
|
||||||
if (!tex || tex->format < 3) { // FIXME pcx support
|
if (!tex || tex->format < 3) { // FIXME pcx support
|
||||||
Sys_MaskPrintf (SYS_GLSL, "Couldn't load %s\n", name);
|
Sys_MaskPrintf (SYS_GLSL, "Couldn't load %s\n", name);
|
||||||
// also look in gfx/env, where Darkplaces looks for skies
|
// also look in gfx/env, where Darkplaces looks for skies
|
||||||
tex = LoadImage (name = va ("gfx/env/%s%s", sky,
|
tex = LoadImage (name = va (0, "gfx/env/%s%s", sky,
|
||||||
sky_suffix[i]), 1);
|
sky_suffix[i]), 1);
|
||||||
if (!tex || tex->format < 3) { // FIXME pcx support
|
if (!tex || tex->format < 3) { // FIXME pcx support
|
||||||
Sys_MaskPrintf (SYS_GLSL, "Couldn't load %s\n", name);
|
Sys_MaskPrintf (SYS_GLSL, "Couldn't load %s\n", name);
|
||||||
|
|
|
@ -318,7 +318,7 @@ glsl_R_ReadPointFile_f (void)
|
||||||
Sys_Error ("Can't duplicate mapname!");
|
Sys_Error ("Can't duplicate mapname!");
|
||||||
QFS_StripExtension (mapname, mapname);
|
QFS_StripExtension (mapname, mapname);
|
||||||
|
|
||||||
name = va ("%s.pts", mapname);
|
name = va (0, "%s.pts", mapname);
|
||||||
free (mapname);
|
free (mapname);
|
||||||
|
|
||||||
f = QFS_FOpenFile (name);
|
f = QFS_FOpenFile (name);
|
||||||
|
|
|
@ -231,8 +231,8 @@ glsl_SCR_ScreenShot_f (void)
|
||||||
dstring_t *name = dstring_new ();
|
dstring_t *name = dstring_new ();
|
||||||
|
|
||||||
// find a file name to save it to
|
// find a file name to save it to
|
||||||
if (!QFS_NextFilename (name,
|
if (!QFS_NextFilename (name, va (0, "%s/qf",
|
||||||
va ("%s/qf", qfs_gamedir->dir.shots), ".png")) {
|
qfs_gamedir->dir.shots), ".png")) {
|
||||||
Sys_Printf ("SCR_ScreenShot_f: Couldn't create a PNG file\n");
|
Sys_Printf ("SCR_ScreenShot_f: Couldn't create a PNG file\n");
|
||||||
} else {
|
} else {
|
||||||
tex_t *tex;
|
tex_t *tex;
|
||||||
|
|
|
@ -268,7 +268,7 @@ type_name (GLenum type)
|
||||||
case GL_FIXED:
|
case GL_FIXED:
|
||||||
return "fixed";
|
return "fixed";
|
||||||
}
|
}
|
||||||
return va("%x", type);
|
return va (0, "%x", type);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -159,7 +159,7 @@ SCR_ScreenShot_f (void)
|
||||||
|
|
||||||
// find a file name to save it to
|
// find a file name to save it to
|
||||||
if (!QFS_NextFilename (pcxname,
|
if (!QFS_NextFilename (pcxname,
|
||||||
va ("%s/qf", qfs_gamedir->dir.shots), ".pcx")) {
|
va (0, "%s/qf", qfs_gamedir->dir.shots), ".pcx")) {
|
||||||
Sys_Printf ("SCR_ScreenShot_f: Couldn't create a PCX");
|
Sys_Printf ("SCR_ScreenShot_f: Couldn't create a PCX");
|
||||||
} else {
|
} else {
|
||||||
// enable direct drawing of console to back buffer
|
// enable direct drawing of console to back buffer
|
||||||
|
|
|
@ -88,7 +88,7 @@ R_ReadPointFile_f (void)
|
||||||
Sys_Error ("Can't duplicate mapname!");
|
Sys_Error ("Can't duplicate mapname!");
|
||||||
QFS_StripExtension (mapname, mapname);
|
QFS_StripExtension (mapname, mapname);
|
||||||
|
|
||||||
name = va ("maps/%s.pts", mapname);
|
name = va (0, "maps/%s.pts", mapname);
|
||||||
free (mapname);
|
free (mapname);
|
||||||
|
|
||||||
f = QFS_FOpenFile (name);
|
f = QFS_FOpenFile (name);
|
||||||
|
|
|
@ -103,8 +103,8 @@ sw32_SCR_ScreenShot_f (void)
|
||||||
int pcx_len;
|
int pcx_len;
|
||||||
|
|
||||||
// find a file name to save it to
|
// find a file name to save it to
|
||||||
if (!QFS_NextFilename (pcxname,
|
if (!QFS_NextFilename (pcxname, va (0, "%s/qf",
|
||||||
va ("%s/qf", qfs_gamedir->dir.shots), ".pcx")) {
|
qfs_gamedir->dir.shots), ".pcx")) {
|
||||||
Sys_Printf ("SCR_ScreenShot_f: Couldn't create a PCX");
|
Sys_Printf ("SCR_ScreenShot_f: Couldn't create a PCX");
|
||||||
} else {
|
} else {
|
||||||
// enable direct drawing of console to back buffer
|
// enable direct drawing of console to back buffer
|
||||||
|
|
|
@ -93,7 +93,7 @@ sw32_R_ReadPointFile_f (void)
|
||||||
Sys_Error ("Can't duplicate mapname!");
|
Sys_Error ("Can't duplicate mapname!");
|
||||||
QFS_StripExtension (mapname, mapname);
|
QFS_StripExtension (mapname, mapname);
|
||||||
|
|
||||||
name = va ("maps/%s.pts", mapname);
|
name = va (0, "maps/%s.pts", mapname);
|
||||||
free (mapname);
|
free (mapname);
|
||||||
|
|
||||||
f = QFS_FOpenFile (name);
|
f = QFS_FOpenFile (name);
|
||||||
|
|
|
@ -40,10 +40,10 @@ VID_SetCaption (const char *text)
|
||||||
if (text && *text) {
|
if (text && *text) {
|
||||||
char *temp = strdup (text);
|
char *temp = strdup (text);
|
||||||
|
|
||||||
SDL_WM_SetCaption (va ("%s: %s", PACKAGE_STRING, temp), NULL);
|
SDL_WM_SetCaption (va (0, "%s: %s", PACKAGE_STRING, temp), NULL);
|
||||||
free (temp);
|
free (temp);
|
||||||
} else {
|
} else {
|
||||||
SDL_WM_SetCaption (va ("%s", PACKAGE_STRING), NULL);
|
SDL_WM_SetCaption (va (0, "%s", PACKAGE_STRING), NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -566,7 +566,7 @@ X11_CreateWindow (int width, int height)
|
||||||
XFree (SizeHints);
|
XFree (SizeHints);
|
||||||
}
|
}
|
||||||
// Set window title
|
// Set window title
|
||||||
X11_SetCaption (va ("%s", PACKAGE_STRING));
|
X11_SetCaption (va (0, "%s", PACKAGE_STRING));
|
||||||
|
|
||||||
// Set icon name
|
// Set icon name
|
||||||
XSetIconName (x_disp, x_win, PACKAGE_NAME);
|
XSetIconName (x_disp, x_win, PACKAGE_NAME);
|
||||||
|
|
|
@ -183,7 +183,7 @@ JOY_Init (void)
|
||||||
static void
|
static void
|
||||||
joyamp_f (cvar_t *var)
|
joyamp_f (cvar_t *var)
|
||||||
{
|
{
|
||||||
Cvar_Set (var, va ("%g", max (0.0001, var->value)));
|
Cvar_Set (var, va (0, "%g", max (0.0001, var->value)));
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -90,9 +90,9 @@ VID_GetWindowSize (int def_w, int def_h)
|
||||||
{
|
{
|
||||||
int pnum, conheight;
|
int pnum, conheight;
|
||||||
|
|
||||||
vid_width = Cvar_Get ("vid_width", va ("%d", def_w), CVAR_NONE, NULL,
|
vid_width = Cvar_Get ("vid_width", va (0, "%d", def_w), CVAR_NONE, NULL,
|
||||||
"screen width");
|
"screen width");
|
||||||
vid_height = Cvar_Get ("vid_height", va ("%d", def_h), CVAR_NONE, NULL,
|
vid_height = Cvar_Get ("vid_height", va (0, "%d", def_h), CVAR_NONE, NULL,
|
||||||
"screen height");
|
"screen height");
|
||||||
vid_aspect = Cvar_Get ("vid_aspect", "4:3", CVAR_ROM, vid_aspect_f,
|
vid_aspect = Cvar_Get ("vid_aspect", "4:3", CVAR_ROM, vid_aspect_f,
|
||||||
"Physical screen aspect ratio in \"width:height\" format. "
|
"Physical screen aspect ratio in \"width:height\" format. "
|
||||||
|
@ -140,7 +140,7 @@ VID_GetWindowSize (int def_w, int def_h)
|
||||||
viddef.aspect = ((vid_aspect->vec[0] * viddef.height)
|
viddef.aspect = ((vid_aspect->vec[0] * viddef.height)
|
||||||
/ (vid_aspect->vec[1] * viddef.width));
|
/ (vid_aspect->vec[1] * viddef.width));
|
||||||
|
|
||||||
con_width = Cvar_Get ("con_width", va ("%d", viddef.width), CVAR_NONE,
|
con_width = Cvar_Get ("con_width", va (0, "%d", viddef.width), CVAR_NONE,
|
||||||
NULL, "console effective width (GL only)");
|
NULL, "console effective width (GL only)");
|
||||||
if ((pnum = COM_CheckParm ("-conwidth"))) {
|
if ((pnum = COM_CheckParm ("-conwidth"))) {
|
||||||
if (pnum >= com_argc - 1)
|
if (pnum >= com_argc - 1)
|
||||||
|
@ -148,20 +148,20 @@ VID_GetWindowSize (int def_w, int def_h)
|
||||||
Cvar_Set (con_width, com_argv[pnum + 1]);
|
Cvar_Set (con_width, com_argv[pnum + 1]);
|
||||||
}
|
}
|
||||||
// make con_width a multiple of 8 and >= 320
|
// make con_width a multiple of 8 and >= 320
|
||||||
Cvar_Set (con_width, va ("%d", max (con_width->int_val & ~7, 320)));
|
Cvar_Set (con_width, va (0, "%d", max (con_width->int_val & ~7, 320)));
|
||||||
Cvar_SetFlags (con_width, con_width->flags | CVAR_ROM);
|
Cvar_SetFlags (con_width, con_width->flags | CVAR_ROM);
|
||||||
viddef.conwidth = con_width->int_val;
|
viddef.conwidth = con_width->int_val;
|
||||||
|
|
||||||
conheight = (viddef.conwidth * vid_aspect->vec[1]) / vid_aspect->vec[0];
|
conheight = (viddef.conwidth * vid_aspect->vec[1]) / vid_aspect->vec[0];
|
||||||
con_height = Cvar_Get ("con_height", va ("%d", conheight), CVAR_NONE, NULL,
|
con_height = Cvar_Get ("con_height", va (0, "%d", conheight), CVAR_NONE,
|
||||||
"console effective height (GL only)");
|
NULL, "console effective height (GL only)");
|
||||||
if ((pnum = COM_CheckParm ("-conheight"))) {
|
if ((pnum = COM_CheckParm ("-conheight"))) {
|
||||||
if (pnum >= com_argc - 1)
|
if (pnum >= com_argc - 1)
|
||||||
Sys_Error ("VID: -conheight <width>");
|
Sys_Error ("VID: -conheight <width>");
|
||||||
Cvar_Set (con_height, com_argv[pnum + 1]);
|
Cvar_Set (con_height, com_argv[pnum + 1]);
|
||||||
}
|
}
|
||||||
// make con_height >= 200
|
// make con_height >= 200
|
||||||
Cvar_Set (con_height, va ("%d", max (con_height->int_val, 200)));
|
Cvar_Set (con_height, va (0, "%d", max (con_height->int_val, 200)));
|
||||||
Cvar_SetFlags (con_height, con_height->flags | CVAR_ROM);
|
Cvar_SetFlags (con_height, con_height->flags | CVAR_ROM);
|
||||||
viddef.conheight = con_height->int_val;
|
viddef.conheight = con_height->int_val;
|
||||||
|
|
||||||
|
@ -258,7 +258,7 @@ VID_InitGamma (unsigned char *pal)
|
||||||
}
|
}
|
||||||
gamma = bound (0.1, gamma, 9.9);
|
gamma = bound (0.1, gamma, 9.9);
|
||||||
|
|
||||||
vid_gamma = Cvar_Get ("vid_gamma", va ("%f", gamma), CVAR_ARCHIVE,
|
vid_gamma = Cvar_Get ("vid_gamma", va (0, "%f", gamma), CVAR_ARCHIVE,
|
||||||
VID_UpdateGamma, "Gamma correction");
|
VID_UpdateGamma, "Gamma correction");
|
||||||
|
|
||||||
VID_BuildGammaTable (vid_gamma->value);
|
VID_BuildGammaTable (vid_gamma->value);
|
||||||
|
|
|
@ -182,10 +182,10 @@ VID_SetCaption (const char *text)
|
||||||
if (text && *text) {
|
if (text && *text) {
|
||||||
char *temp = strdup (text);
|
char *temp = strdup (text);
|
||||||
|
|
||||||
X11_SetCaption (va ("%s: %s", PACKAGE_STRING, temp));
|
X11_SetCaption (va (0, "%s: %s", PACKAGE_STRING, temp));
|
||||||
free (temp);
|
free (temp);
|
||||||
} else {
|
} else {
|
||||||
X11_SetCaption (va ("%s", PACKAGE_STRING));
|
X11_SetCaption (va (0, "%s", PACKAGE_STRING));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@
|
||||||
#include "QF/cvar.h"
|
#include "QF/cvar.h"
|
||||||
#include "QF/set.h"
|
#include "QF/set.h"
|
||||||
#include "QF/sys.h"
|
#include "QF/sys.h"
|
||||||
|
#include "QF/va.h"
|
||||||
|
|
||||||
#include "QF/Vulkan/instance.h"
|
#include "QF/Vulkan/instance.h"
|
||||||
|
|
||||||
|
@ -211,6 +212,7 @@ X11_Vulkan_Context (void)
|
||||||
ctx->create_window = x11_vulkan_create_window;
|
ctx->create_window = x11_vulkan_create_window;
|
||||||
ctx->create_surface = x11_vulkan_create_surface;
|
ctx->create_surface = x11_vulkan_create_surface;
|
||||||
ctx->required_extensions = required_extensions;
|
ctx->required_extensions = required_extensions;
|
||||||
|
ctx->va_ctx = va_create_context (4);
|
||||||
return ctx;
|
return ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -312,7 +312,7 @@ CL_Record_f (void)
|
||||||
|
|
||||||
// start up the map
|
// start up the map
|
||||||
if (c > 2)
|
if (c > 2)
|
||||||
Cmd_ExecuteString (va ("map %s", Cmd_Argv (2)), src_command);
|
Cmd_ExecuteString (va (0, "map %s", Cmd_Argv (2)), src_command);
|
||||||
|
|
||||||
CL_Record (Cmd_Argv (1), track);
|
CL_Record (Cmd_Argv (1), track);
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,7 +106,7 @@ CL_WriteConfiguration (void)
|
||||||
// dedicated servers initialize the host but don't parse and set the
|
// dedicated servers initialize the host but don't parse and set the
|
||||||
// config.cfg cvars
|
// config.cfg cvars
|
||||||
if (host_initialized && !isDedicated && cl_writecfg->int_val) {
|
if (host_initialized && !isDedicated && cl_writecfg->int_val) {
|
||||||
char *path = va ("%s/config.cfg", qfs_gamedir->dir.def);
|
char *path = va (0, "%s/config.cfg", qfs_gamedir->dir.def);
|
||||||
f = QFS_WOpen (path, 0);
|
f = QFS_WOpen (path, 0);
|
||||||
if (!f) {
|
if (!f) {
|
||||||
Sys_Printf ("Couldn't write config.cfg.\n");
|
Sys_Printf ("Couldn't write config.cfg.\n");
|
||||||
|
@ -344,10 +344,11 @@ CL_SignonReply (void)
|
||||||
|
|
||||||
case so_spawn:
|
case so_spawn:
|
||||||
MSG_WriteByte (&cls.message, clc_stringcmd);
|
MSG_WriteByte (&cls.message, clc_stringcmd);
|
||||||
MSG_WriteString (&cls.message, va ("name \"%s\"\n", cl_name->string));
|
MSG_WriteString (&cls.message, va (0, "name \"%s\"\n",
|
||||||
|
cl_name->string));
|
||||||
MSG_WriteByte (&cls.message, clc_stringcmd);
|
MSG_WriteByte (&cls.message, clc_stringcmd);
|
||||||
MSG_WriteString (&cls.message,
|
MSG_WriteString (&cls.message,
|
||||||
va ("color %i %i\n", (cl_color->int_val) >> 4,
|
va (0, "color %i %i\n", (cl_color->int_val) >> 4,
|
||||||
(cl_color->int_val) & 15));
|
(cl_color->int_val) & 15));
|
||||||
MSG_WriteByte (&cls.message, clc_stringcmd);
|
MSG_WriteByte (&cls.message, clc_stringcmd);
|
||||||
MSG_WriteString (&cls.message, "spawn");
|
MSG_WriteString (&cls.message, "spawn");
|
||||||
|
@ -389,7 +390,8 @@ CL_NextDemo (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Cbuf_InsertText (host_cbuf, va ("playdemo %s\n", cls.demos[cls.demonum]));
|
Cbuf_InsertText (host_cbuf, va (0, "playdemo %s\n",
|
||||||
|
cls.demos[cls.demonum]));
|
||||||
cls.demonum++;
|
cls.demonum++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -866,7 +866,7 @@ CL_ParseServerMessage (void)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
SHOWNET (va ("%s(%d)", svc_strings[cmd], cmd));
|
SHOWNET (va (0, "%s(%d)", svc_strings[cmd], cmd));
|
||||||
|
|
||||||
// other commands
|
// other commands
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
|
|
|
@ -529,7 +529,7 @@ Host_FilterTime (float time)
|
||||||
//FIXME not having the framerate cap is nice, but it breaks net play
|
//FIXME not having the framerate cap is nice, but it breaks net play
|
||||||
timedifference = (timescale / 72.0) - (realtime - oldrealtime);
|
timedifference = (timescale / 72.0) - (realtime - oldrealtime);
|
||||||
|
|
||||||
if (!cls.timedemo && (timedifference > 0))
|
if (0 && !cls.timedemo && (timedifference > 0))
|
||||||
return timedifference; // framerate is too high
|
return timedifference; // framerate is too high
|
||||||
|
|
||||||
host_frametime = realtime - oldrealtime;
|
host_frametime = realtime - oldrealtime;
|
||||||
|
@ -541,7 +541,7 @@ Host_FilterTime (float time)
|
||||||
if (host_framerate->value > 0)
|
if (host_framerate->value > 0)
|
||||||
host_frametime = host_framerate->value;
|
host_frametime = host_framerate->value;
|
||||||
else // don't allow really long or short frames
|
else // don't allow really long or short frames
|
||||||
host_frametime = bound (0.001, host_frametime, 0.1);
|
host_frametime = bound (0.000, host_frametime, 0.1);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -696,7 +696,7 @@ _Host_Frame (float time)
|
||||||
|
|
||||||
if (cls.demo_capture) {
|
if (cls.demo_capture) {
|
||||||
tex_t *tex = r_funcs->SCR_CaptureBGR ();
|
tex_t *tex = r_funcs->SCR_CaptureBGR ();
|
||||||
WritePNGqfs (va ("%s/qfmv%06d.png", qfs_gamedir->dir.shots,
|
WritePNGqfs (va (0, "%s/qfmv%06d.png", qfs_gamedir->dir.shots,
|
||||||
cls.demo_capture++),
|
cls.demo_capture++),
|
||||||
tex->data, tex->width, tex->height);
|
tex->data, tex->width, tex->height);
|
||||||
free (tex);
|
free (tex);
|
||||||
|
|
|
@ -239,13 +239,13 @@ nice_time (float time)
|
||||||
int t = time + 0.5;
|
int t = time + 0.5;
|
||||||
|
|
||||||
if (t < 60) {
|
if (t < 60) {
|
||||||
return va ("%ds", t);
|
return va (0, "%ds", t);
|
||||||
} else if (t < 3600) {
|
} else if (t < 3600) {
|
||||||
return va ("%dm%02ds", t / 60, t % 60);
|
return va (0, "%dm%02ds", t / 60, t % 60);
|
||||||
} else if (t < 86400) {
|
} else if (t < 86400) {
|
||||||
return va ("%dh%02dm%02ds", t / 3600, (t / 60) % 60, t % 60);
|
return va (0, "%dh%02dm%02ds", t / 3600, (t / 60) % 60, t % 60);
|
||||||
} else {
|
} else {
|
||||||
return va ("%dd%02dh%02dm%02ds",
|
return va (0, "%dd%02dh%02dm%02ds",
|
||||||
t / 86400, (t / 3600) % 24, (t / 60) % 60, t % 60);
|
t / 86400, (t / 3600) % 24, (t / 60) % 60, t % 60);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -279,7 +279,7 @@ Host_Map_f (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
// check to make sure the level exists
|
// check to make sure the level exists
|
||||||
expanded = va ("maps/%s.bsp", Cmd_Argv (1));
|
expanded = va (0, "maps/%s.bsp", Cmd_Argv (1));
|
||||||
f = QFS_FOpenFile (expanded);
|
f = QFS_FOpenFile (expanded);
|
||||||
if (!f) {
|
if (!f) {
|
||||||
Sys_Printf ("Can't find %s\n", expanded);
|
Sys_Printf ("Can't find %s\n", expanded);
|
||||||
|
@ -395,7 +395,7 @@ spawn_parms_array (void)
|
||||||
const char *parm;
|
const char *parm;
|
||||||
|
|
||||||
for (i = 0; i < NUM_SPAWN_PARMS; i++) {
|
for (i = 0; i < NUM_SPAWN_PARMS; i++) {
|
||||||
parm = va ("%.9g", svs.clients->spawn_parms[i]);
|
parm = va (0, "%.9g", svs.clients->spawn_parms[i]);
|
||||||
PL_A_AddObject (parms, PL_NewString (parm));
|
PL_A_AddObject (parms, PL_NewString (parm));
|
||||||
}
|
}
|
||||||
return parms;
|
return parms;
|
||||||
|
@ -437,15 +437,15 @@ game_dict (void)
|
||||||
plitem_t *game = PL_NewDictionary ();
|
plitem_t *game = PL_NewDictionary ();
|
||||||
|
|
||||||
PL_D_AddObject (game, "comment",
|
PL_D_AddObject (game, "comment",
|
||||||
PL_NewString (va ("%-21s kills:%3i/%3i", cl.levelname,
|
PL_NewString (va (0, "%-21s kills:%3i/%3i", cl.levelname,
|
||||||
cl.stats[STAT_MONSTERS],
|
cl.stats[STAT_MONSTERS],
|
||||||
cl.stats[STAT_TOTALMONSTERS])));
|
cl.stats[STAT_TOTALMONSTERS])));
|
||||||
PL_D_AddObject (game, "spawn_parms", spawn_parms_array ());
|
PL_D_AddObject (game, "spawn_parms", spawn_parms_array ());
|
||||||
PL_D_AddObject (game, "current_skill",
|
PL_D_AddObject (game, "current_skill",
|
||||||
PL_NewString (va ("%d", current_skill)));
|
PL_NewString (va (0, "%d", current_skill)));
|
||||||
PL_D_AddObject (game, "name", PL_NewString (sv.name));
|
PL_D_AddObject (game, "name", PL_NewString (sv.name));
|
||||||
// sv.time is a double, so it gets 17 digits
|
// sv.time is a double, so it gets 17 digits
|
||||||
PL_D_AddObject (game, "time", PL_NewString (va ("%.17g", sv.time)));
|
PL_D_AddObject (game, "time", PL_NewString (va (0, "%.17g", sv.time)));
|
||||||
PL_D_AddObject (game, "lightstyles", lightstyles_array ());
|
PL_D_AddObject (game, "lightstyles", lightstyles_array ());
|
||||||
PL_D_AddObject (game, "globals", ED_GlobalsDict (&sv_pr_state));
|
PL_D_AddObject (game, "globals", ED_GlobalsDict (&sv_pr_state));
|
||||||
PL_D_AddObject (game, "entities", entities_array ());
|
PL_D_AddObject (game, "entities", entities_array ());
|
||||||
|
@ -478,7 +478,7 @@ convert_to_game_dict (script_t *script)
|
||||||
// values
|
// values
|
||||||
Script_GetToken (script, 1);
|
Script_GetToken (script, 1);
|
||||||
skill = (int) (atof (script->token->str) + 0.1);
|
skill = (int) (atof (script->token->str) + 0.1);
|
||||||
PL_D_AddObject (game, "current_skill", PL_NewString (va ("%d", skill)));
|
PL_D_AddObject (game, "current_skill", PL_NewString (va (0, "%d", skill)));
|
||||||
|
|
||||||
Script_GetToken (script, 1);
|
Script_GetToken (script, 1);
|
||||||
PL_D_AddObject (game, "name", PL_NewString (script->token->str));
|
PL_D_AddObject (game, "name", PL_NewString (script->token->str));
|
||||||
|
@ -752,7 +752,7 @@ Host_Name_f (void)
|
||||||
if (cmd_source == src_command) {
|
if (cmd_source == src_command) {
|
||||||
if (strcmp (cl_name->string, newName) == 0)
|
if (strcmp (cl_name->string, newName) == 0)
|
||||||
return;
|
return;
|
||||||
Cvar_Set (cl_name, va ("%.15s", newName));
|
Cvar_Set (cl_name, va (0, "%.15s", newName));
|
||||||
if (cls.state >= ca_connected)
|
if (cls.state >= ca_connected)
|
||||||
CL_Cmd_ForwardToServer ();
|
CL_Cmd_ForwardToServer ();
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1648,8 +1648,8 @@ Sbar_Init (void)
|
||||||
Key_KeydestCallback (sbar_keydest_callback);
|
Key_KeydestCallback (sbar_keydest_callback);
|
||||||
|
|
||||||
for (i = 0; i < 10; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
sb_nums[0][i] = r_funcs->Draw_PicFromWad (va ("num_%i", i));
|
sb_nums[0][i] = r_funcs->Draw_PicFromWad (va (0, "num_%i", i));
|
||||||
sb_nums[1][i] = r_funcs->Draw_PicFromWad (va ("anum_%i", i));
|
sb_nums[1][i] = r_funcs->Draw_PicFromWad (va (0, "anum_%i", i));
|
||||||
}
|
}
|
||||||
|
|
||||||
sb_nums[0][10] = r_funcs->Draw_PicFromWad ("num_minus");
|
sb_nums[0][10] = r_funcs->Draw_PicFromWad ("num_minus");
|
||||||
|
@ -1676,19 +1676,19 @@ Sbar_Init (void)
|
||||||
|
|
||||||
for (i = 0; i < 5; i++) {
|
for (i = 0; i < 5; i++) {
|
||||||
sb_weapons[2 + i][0] =
|
sb_weapons[2 + i][0] =
|
||||||
r_funcs->Draw_PicFromWad (va ("inva%i_shotgun", i + 1));
|
r_funcs->Draw_PicFromWad (va (0, "inva%i_shotgun", i + 1));
|
||||||
sb_weapons[2 + i][1] =
|
sb_weapons[2 + i][1] =
|
||||||
r_funcs->Draw_PicFromWad (va ("inva%i_sshotgun", i + 1));
|
r_funcs->Draw_PicFromWad (va (0, "inva%i_sshotgun", i + 1));
|
||||||
sb_weapons[2 + i][2] =
|
sb_weapons[2 + i][2] =
|
||||||
r_funcs->Draw_PicFromWad (va ("inva%i_nailgun", i + 1));
|
r_funcs->Draw_PicFromWad (va (0, "inva%i_nailgun", i + 1));
|
||||||
sb_weapons[2 + i][3] =
|
sb_weapons[2 + i][3] =
|
||||||
r_funcs->Draw_PicFromWad (va ("inva%i_snailgun", i + 1));
|
r_funcs->Draw_PicFromWad (va (0, "inva%i_snailgun", i + 1));
|
||||||
sb_weapons[2 + i][4] =
|
sb_weapons[2 + i][4] =
|
||||||
r_funcs->Draw_PicFromWad (va ("inva%i_rlaunch", i + 1));
|
r_funcs->Draw_PicFromWad (va (0, "inva%i_rlaunch", i + 1));
|
||||||
sb_weapons[2 + i][5] =
|
sb_weapons[2 + i][5] =
|
||||||
r_funcs->Draw_PicFromWad (va ("inva%i_srlaunch", i + 1));
|
r_funcs->Draw_PicFromWad (va (0, "inva%i_srlaunch", i + 1));
|
||||||
sb_weapons[2 + i][6] =
|
sb_weapons[2 + i][6] =
|
||||||
r_funcs->Draw_PicFromWad (va ("inva%i_lightng", i + 1));
|
r_funcs->Draw_PicFromWad (va (0, "inva%i_lightng", i + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
sb_ammo[0] = r_funcs->Draw_PicFromWad ("sb_shells");
|
sb_ammo[0] = r_funcs->Draw_PicFromWad ("sb_shells");
|
||||||
|
@ -1753,15 +1753,15 @@ Sbar_Init (void)
|
||||||
|
|
||||||
for (i = 0; i < 5; i++) {
|
for (i = 0; i < 5; i++) {
|
||||||
hsb_weapons[2 + i][0] =
|
hsb_weapons[2 + i][0] =
|
||||||
r_funcs->Draw_PicFromWad (va ("inva%i_laser", i + 1));
|
r_funcs->Draw_PicFromWad (va (0, "inva%i_laser", i + 1));
|
||||||
hsb_weapons[2 + i][1] =
|
hsb_weapons[2 + i][1] =
|
||||||
r_funcs->Draw_PicFromWad (va ("inva%i_mjolnir", i + 1));
|
r_funcs->Draw_PicFromWad (va (0, "inva%i_mjolnir", i + 1));
|
||||||
hsb_weapons[2 + i][2] =
|
hsb_weapons[2 + i][2] =
|
||||||
r_funcs->Draw_PicFromWad (va ("inva%i_gren_prox", i + 1));
|
r_funcs->Draw_PicFromWad (va (0, "inva%i_gren_prox", i + 1));
|
||||||
hsb_weapons[2 + i][3] =
|
hsb_weapons[2 + i][3] =
|
||||||
r_funcs->Draw_PicFromWad (va ("inva%i_prox_gren", i + 1));
|
r_funcs->Draw_PicFromWad (va (0, "inva%i_prox_gren", i + 1));
|
||||||
hsb_weapons[2 + i][4] =
|
hsb_weapons[2 + i][4] =
|
||||||
r_funcs->Draw_PicFromWad (va ("inva%i_prox", i + 1));
|
r_funcs->Draw_PicFromWad (va (0, "inva%i_prox", i + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
hsb_items[0] = r_funcs->Draw_PicFromWad ("sb_wsuit");
|
hsb_items[0] = r_funcs->Draw_PicFromWad ("sb_wsuit");
|
||||||
|
|
|
@ -1214,7 +1214,7 @@ SV_SpawnServer (const char *server)
|
||||||
*sv_globals.serverflags = svs.serverflags;
|
*sv_globals.serverflags = svs.serverflags;
|
||||||
|
|
||||||
*sv_globals.time = sv.time;
|
*sv_globals.time = sv.time;
|
||||||
ent_file = QFS_VOpenFile (va ("maps/%s.ent", server), 0,
|
ent_file = QFS_VOpenFile (va (0, "maps/%s.ent", server), 0,
|
||||||
sv.worldmodel->vpath);
|
sv.worldmodel->vpath);
|
||||||
if ((buf = QFS_LoadFile (ent_file, 0))) {
|
if ((buf = QFS_LoadFile (ent_file, 0))) {
|
||||||
ED_LoadFromFile (&sv_pr_state, (char *) buf);
|
ED_LoadFromFile (&sv_pr_state, (char *) buf);
|
||||||
|
|
|
@ -1280,7 +1280,7 @@ PF_changelevel (progs_t *pr)
|
||||||
svs.changelevel_issued = true;
|
svs.changelevel_issued = true;
|
||||||
|
|
||||||
s = P_GSTRING (pr, 0);
|
s = P_GSTRING (pr, 0);
|
||||||
Cbuf_AddText (host_cbuf, va ("changelevel %s\n", s));
|
Cbuf_AddText (host_cbuf, va (0, "changelevel %s\n", s));
|
||||||
}
|
}
|
||||||
|
|
||||||
// entity (entity ent) testentitypos
|
// entity (entity ent) testentitypos
|
||||||
|
|
|
@ -177,9 +177,9 @@ cl_prespawn_f (client_t *cl, void *unused)
|
||||||
if (buf >= sv->num_signon_buffers)
|
if (buf >= sv->num_signon_buffers)
|
||||||
buf = 0;
|
buf = 0;
|
||||||
if (buf == sv->num_signon_buffers - 1)
|
if (buf == sv->num_signon_buffers - 1)
|
||||||
cmd = va ("cmd spawn %i 0\n", cl->server->spawncount);
|
cmd = va (0, "cmd spawn %i 0\n", cl->server->spawncount);
|
||||||
else
|
else
|
||||||
cmd = va ("cmd prespawn %i %i\n", cl->server->spawncount, buf + 1);
|
cmd = va (0, "cmd prespawn %i %i\n", cl->server->spawncount, buf + 1);
|
||||||
size = sv->signon_buffer_size[buf] + 1 + strlen (cmd) + 1;
|
size = sv->signon_buffer_size[buf] + 1 + strlen (cmd) + 1;
|
||||||
msg = MSG_ReliableCheckBlock (&cl->backbuf, size);
|
msg = MSG_ReliableCheckBlock (&cl->backbuf, size);
|
||||||
SZ_Write (msg, sv->signon_buffers[buf], sv->signon_buffer_size[buf]);
|
SZ_Write (msg, sv->signon_buffers[buf], sv->signon_buffer_size[buf]);
|
||||||
|
@ -1234,7 +1234,7 @@ Client_New (client_t *cl)
|
||||||
MSG_WriteByte (&cl->netchan.message, sv->cdtrack);
|
MSG_WriteByte (&cl->netchan.message, sv->cdtrack);
|
||||||
MSG_WriteByte (&cl->netchan.message, svc_stufftext);
|
MSG_WriteByte (&cl->netchan.message, svc_stufftext);
|
||||||
MSG_WriteString (&cl->netchan.message,
|
MSG_WriteString (&cl->netchan.message,
|
||||||
va ("fullserverinfo \"%s\"\n",
|
va (0, "fullserverinfo \"%s\"\n",
|
||||||
Info_MakeString (sv->info, 0)));
|
Info_MakeString (sv->info, 0)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -237,7 +237,7 @@ qtv_quit_f (void)
|
||||||
static void
|
static void
|
||||||
qtv_net_init (void)
|
qtv_net_init (void)
|
||||||
{
|
{
|
||||||
qtv_port = Cvar_Get ("qtv_port", va ("%d", PORT_QTV), 0, 0,
|
qtv_port = Cvar_Get ("qtv_port", va (0, "%d", PORT_QTV), 0, 0,
|
||||||
"udp port to use");
|
"udp port to use");
|
||||||
sv_timeout = Cvar_Get ("sv_timeout", "60", 0, 0, "server timeout");
|
sv_timeout = Cvar_Get ("sv_timeout", "60", 0, 0, "server timeout");
|
||||||
NET_Init (qtv_port->int_val);
|
NET_Init (qtv_port->int_val);
|
||||||
|
|
|
@ -52,7 +52,7 @@ draw_clients (view_t *view)
|
||||||
const char *s;
|
const char *s;
|
||||||
char *d;
|
char *d;
|
||||||
|
|
||||||
str = va ("[CL: %3d]", client_count);
|
str = va (0, "[CL: %3d]", client_count);
|
||||||
for (s = str, d = sb->text + view->xrel; *s; s++)
|
for (s = str, d = sb->text + view->xrel; *s; s++)
|
||||||
*d++ = *s;
|
*d++ = *s;
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ draw_servers (view_t *view)
|
||||||
const char *s;
|
const char *s;
|
||||||
char *d;
|
char *d;
|
||||||
|
|
||||||
str = va ("[SV: %2d]", server_count);
|
str = va (0, "[SV: %2d]", server_count);
|
||||||
for (s = str, d = sb->text + view->xrel; *s; s++)
|
for (s = str, d = sb->text + view->xrel; *s; s++)
|
||||||
*d++ = *s;
|
*d++ = *s;
|
||||||
}
|
}
|
||||||
|
|
|
@ -452,7 +452,8 @@ sv_new_f (void)
|
||||||
sv->qport = qport->int_val;
|
sv->qport = qport->int_val;
|
||||||
sv->info = Info_ParseString ("", MAX_INFO_STRING, 0);
|
sv->info = Info_ParseString ("", MAX_INFO_STRING, 0);
|
||||||
Info_SetValueForStarKey (sv->info, "*ver",
|
Info_SetValueForStarKey (sv->info, "*ver",
|
||||||
va ("%s QTV %s", QW_VERSION, PACKAGE_VERSION), 0);
|
va (0, "%s QTV %s", QW_VERSION, PACKAGE_VERSION),
|
||||||
|
0);
|
||||||
Info_SetValueForStarKey (sv->info, "*qsg_version", QW_QSG_VERSION, 0);
|
Info_SetValueForStarKey (sv->info, "*qsg_version", QW_QSG_VERSION, 0);
|
||||||
Info_SetValueForKey (sv->info, "name", "QTV Proxy", 0);
|
Info_SetValueForKey (sv->info, "name", "QTV Proxy", 0);
|
||||||
Hash_Add (server_hash, sv);
|
Hash_Add (server_hash, sv);
|
||||||
|
@ -628,7 +629,7 @@ Server_Broadcast (server_t *sv, int reliable, int all, const byte *msg,
|
||||||
void
|
void
|
||||||
Server_BroadcastCommand (server_t *sv, const char *cmd)
|
Server_BroadcastCommand (server_t *sv, const char *cmd)
|
||||||
{
|
{
|
||||||
const char *msg = va ("%c%s", svc_stufftext, cmd);
|
const char *msg = va (0, "%c%s", svc_stufftext, cmd);
|
||||||
int len = strlen (msg) + 1;
|
int len = strlen (msg) + 1;
|
||||||
Server_Broadcast (sv, 1, 1, (const byte *) msg, len);
|
Server_Broadcast (sv, 1, 1, (const byte *) msg, len);
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,7 +118,7 @@ sv_serverdata (server_t *sv, qmsg_t *msg)
|
||||||
|
|
||||||
MSG_WriteByte (&sv->netchan.message, qtv_stringcmd);
|
MSG_WriteByte (&sv->netchan.message, qtv_stringcmd);
|
||||||
MSG_WriteString (&sv->netchan.message,
|
MSG_WriteString (&sv->netchan.message,
|
||||||
va ("soundlist %i %i", sv->spawncount, 0));
|
va (0, "soundlist %i %i", sv->spawncount, 0));
|
||||||
sv->next_run = realtime;
|
sv->next_run = realtime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,11 +147,11 @@ sv_soundlist (server_t *sv, qmsg_t *msg)
|
||||||
if (n) {
|
if (n) {
|
||||||
MSG_WriteByte (&sv->netchan.message, qtv_stringcmd);
|
MSG_WriteByte (&sv->netchan.message, qtv_stringcmd);
|
||||||
MSG_WriteString (&sv->netchan.message,
|
MSG_WriteString (&sv->netchan.message,
|
||||||
va ("soundlist %d %d", sv->spawncount, n));
|
va (0, "soundlist %d %d", sv->spawncount, n));
|
||||||
} else {
|
} else {
|
||||||
MSG_WriteByte (&sv->netchan.message, qtv_stringcmd);
|
MSG_WriteByte (&sv->netchan.message, qtv_stringcmd);
|
||||||
MSG_WriteString (&sv->netchan.message,
|
MSG_WriteString (&sv->netchan.message,
|
||||||
va ("modellist %d %d", sv->spawncount, 0));
|
va (0, "modellist %d %d", sv->spawncount, 0));
|
||||||
}
|
}
|
||||||
sv->next_run = realtime;
|
sv->next_run = realtime;
|
||||||
}
|
}
|
||||||
|
@ -183,11 +183,11 @@ sv_modellist (server_t *sv, qmsg_t *msg)
|
||||||
if (n) {
|
if (n) {
|
||||||
MSG_WriteByte (&sv->netchan.message, qtv_stringcmd);
|
MSG_WriteByte (&sv->netchan.message, qtv_stringcmd);
|
||||||
MSG_WriteString (&sv->netchan.message,
|
MSG_WriteString (&sv->netchan.message,
|
||||||
va ("modellist %d %d", sv->spawncount, n));
|
va (0, "modellist %d %d", sv->spawncount, n));
|
||||||
} else {
|
} else {
|
||||||
MSG_WriteByte (&sv->netchan.message, qtv_stringcmd);
|
MSG_WriteByte (&sv->netchan.message, qtv_stringcmd);
|
||||||
MSG_WriteString (&sv->netchan.message,
|
MSG_WriteString (&sv->netchan.message,
|
||||||
va ("prespawn %d 0 0", sv->spawncount));
|
va (0, "prespawn %d 0 0", sv->spawncount));
|
||||||
sv->signon = 1;
|
sv->signon = 1;
|
||||||
}
|
}
|
||||||
sv->next_run = realtime;
|
sv->next_run = realtime;
|
||||||
|
@ -213,7 +213,7 @@ sv_skins_f (server_t *sv)
|
||||||
// to get everything ready at the last miniute before we start getting
|
// to get everything ready at the last miniute before we start getting
|
||||||
// actual in-game update messages
|
// actual in-game update messages
|
||||||
MSG_WriteByte (&sv->netchan.message, qtv_stringcmd);
|
MSG_WriteByte (&sv->netchan.message, qtv_stringcmd);
|
||||||
MSG_WriteString (&sv->netchan.message, va ("begin %d", sv->spawncount));
|
MSG_WriteString (&sv->netchan.message, va (0, "begin %d", sv->spawncount));
|
||||||
sv->next_run = realtime;
|
sv->next_run = realtime;
|
||||||
sv->connected = 2;
|
sv->connected = 2;
|
||||||
sv->delta = -1;
|
sv->delta = -1;
|
||||||
|
|
|
@ -233,7 +233,7 @@ CL_ChatInfo (int val)
|
||||||
val = 0;
|
val = 0;
|
||||||
if (cls.chat != val) {
|
if (cls.chat != val) {
|
||||||
cls.chat = val;
|
cls.chat = val;
|
||||||
Cbuf_AddText(cl_cbuf, va ("setinfo chat \"%d\"\n", val));
|
Cbuf_AddText(cl_cbuf, va (0, "setinfo chat \"%d\"\n", val));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ Cvar_Info (cvar_t *var)
|
||||||
if (cls.state >= ca_connected && !cls.demoplayback) {
|
if (cls.state >= ca_connected && !cls.demoplayback) {
|
||||||
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
||||||
MSG_WriteString (&cls.netchan.message,
|
MSG_WriteString (&cls.netchan.message,
|
||||||
va ("setinfo \"%s\" \"%s\"\n", var->name,
|
va (0, "setinfo \"%s\" \"%s\"\n", var->name,
|
||||||
var->string));
|
var->string));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -697,7 +697,7 @@ demo_start_recording (int track)
|
||||||
|
|
||||||
// send server info string
|
// send server info string
|
||||||
MSG_WriteByte (&buf, svc_stufftext);
|
MSG_WriteByte (&buf, svc_stufftext);
|
||||||
MSG_WriteString (&buf, va ("fullserverinfo \"%s\"\n",
|
MSG_WriteString (&buf, va (0, "fullserverinfo \"%s\"\n",
|
||||||
Info_MakeString (cl.serverinfo, 0)));
|
Info_MakeString (cl.serverinfo, 0)));
|
||||||
|
|
||||||
// flush packet
|
// flush packet
|
||||||
|
@ -803,7 +803,7 @@ demo_start_recording (int track)
|
||||||
}
|
}
|
||||||
|
|
||||||
MSG_WriteByte (&buf, svc_stufftext);
|
MSG_WriteByte (&buf, svc_stufftext);
|
||||||
MSG_WriteString (&buf, va ("cmd spawn %i 0\n", cl.servercount));
|
MSG_WriteString (&buf, va (0, "cmd spawn %i 0\n", cl.servercount));
|
||||||
|
|
||||||
if (buf.cursize) {
|
if (buf.cursize) {
|
||||||
CL_WriteRecordDemoMessage (&buf, seq++);
|
CL_WriteRecordDemoMessage (&buf, seq++);
|
||||||
|
@ -863,7 +863,7 @@ demo_start_recording (int track)
|
||||||
// get the client to check and download skins
|
// get the client to check and download skins
|
||||||
// when that is completed, a begin command will be issued
|
// when that is completed, a begin command will be issued
|
||||||
MSG_WriteByte (&buf, svc_stufftext);
|
MSG_WriteByte (&buf, svc_stufftext);
|
||||||
MSG_WriteString (&buf, va ("skins\n"));
|
MSG_WriteString (&buf, va (0, "skins\n"));
|
||||||
|
|
||||||
CL_WriteRecordDemoMessage (&buf, seq++);
|
CL_WriteRecordDemoMessage (&buf, seq++);
|
||||||
|
|
||||||
|
|
|
@ -321,7 +321,7 @@ CL_CheckForResend (void)
|
||||||
|
|
||||||
connect_time = realtime + t2 - t1; // for retransmit requests
|
connect_time = realtime + t2 - t1; // for retransmit requests
|
||||||
|
|
||||||
VID_SetCaption (va ("Connecting to %s", cls.servername->str));
|
VID_SetCaption (va (0, "Connecting to %s", cls.servername->str));
|
||||||
Sys_Printf ("Connecting to %s...\n", cls.servername->str);
|
Sys_Printf ("Connecting to %s...\n", cls.servername->str);
|
||||||
Netchan_SendPacket (strlen (getchallenge), (void *) getchallenge,
|
Netchan_SendPacket (strlen (getchallenge), (void *) getchallenge,
|
||||||
cls.server_addr);
|
cls.server_addr);
|
||||||
|
@ -785,7 +785,7 @@ CL_NextDemo (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Cbuf_InsertText (cl_cbuf, va ("playdemo %s\n", cls.demos[cls.demonum]));
|
Cbuf_InsertText (cl_cbuf, va (0, "playdemo %s\n", cls.demos[cls.demonum]));
|
||||||
cls.demonum++;
|
cls.demonum++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1089,7 +1089,7 @@ CL_Download_f (void)
|
||||||
cls.downloadtype = dl_single;
|
cls.downloadtype = dl_single;
|
||||||
|
|
||||||
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
||||||
SZ_Print (&cls.netchan.message, va ("download %s\n", Cmd_Argv (1)));
|
SZ_Print (&cls.netchan.message, va (0, "download %s\n", Cmd_Argv (1)));
|
||||||
} else {
|
} else {
|
||||||
Sys_Printf ("error downloading %s: %s\n", Cmd_Argv (1),
|
Sys_Printf ("error downloading %s: %s\n", Cmd_Argv (1),
|
||||||
strerror (errno));
|
strerror (errno));
|
||||||
|
@ -1515,7 +1515,7 @@ Host_WriteConfiguration (void)
|
||||||
QFile *f;
|
QFile *f;
|
||||||
|
|
||||||
if (host_initialized && cl_writecfg->int_val) {
|
if (host_initialized && cl_writecfg->int_val) {
|
||||||
char *path = va ("%s/config.cfg", qfs_gamedir->dir.def);
|
char *path = va (0, "%s/config.cfg", qfs_gamedir->dir.def);
|
||||||
|
|
||||||
f = QFS_WOpen (path, 0);
|
f = QFS_WOpen (path, 0);
|
||||||
if (!f) {
|
if (!f) {
|
||||||
|
@ -1700,7 +1700,7 @@ Host_Frame (float time)
|
||||||
|
|
||||||
if (cls.demo_capture) {
|
if (cls.demo_capture) {
|
||||||
tex_t *tex = r_funcs->SCR_CaptureBGR ();
|
tex_t *tex = r_funcs->SCR_CaptureBGR ();
|
||||||
WritePNGqfs (va ("%s/qfmv%06d.png", qfs_gamedir->dir.shots,
|
WritePNGqfs (va (0, "%s/qfmv%06d.png", qfs_gamedir->dir.shots,
|
||||||
cls.demo_capture++),
|
cls.demo_capture++),
|
||||||
tex->data, tex->width, tex->height);
|
tex->data, tex->width, tex->height);
|
||||||
free (tex);
|
free (tex);
|
||||||
|
@ -1782,7 +1782,7 @@ CL_Autoexec (int phase)
|
||||||
Cbuf_AddText (cl_cbuf, "exec autoexec.cfg\n");
|
Cbuf_AddText (cl_cbuf, "exec autoexec.cfg\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
Cbuf_AddText (cl_cbuf, va ("cmd_warncmd %d\n", cmd_warncmd_val));
|
Cbuf_AddText (cl_cbuf, va (0, "cmd_warncmd %d\n", cmd_warncmd_val));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -265,7 +265,7 @@ CL_CheckOrDownloadFile (const char *filename)
|
||||||
|
|
||||||
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
||||||
MSG_WriteString (&cls.netchan.message,
|
MSG_WriteString (&cls.netchan.message,
|
||||||
va ("download \"%s\"", cls.downloadname->str));
|
va (0, "download \"%s\"", cls.downloadname->str));
|
||||||
|
|
||||||
cls.downloadnumber++;
|
cls.downloadnumber++;
|
||||||
|
|
||||||
|
@ -373,12 +373,13 @@ Model_NextDownload (void)
|
||||||
aliashdr_t *ahdr = cl.model_precache[i]->aliashdr;
|
aliashdr_t *ahdr = cl.model_precache[i]->aliashdr;
|
||||||
if (!ahdr)
|
if (!ahdr)
|
||||||
ahdr = Cache_Get (&cl.model_precache[i]->cache);
|
ahdr = Cache_Get (&cl.model_precache[i]->cache);
|
||||||
Info_SetValueForKey (cls.userinfo, info_key, va ("%d", ahdr->crc),
|
Info_SetValueForKey (cls.userinfo, info_key, va (0, "%d",
|
||||||
|
ahdr->crc),
|
||||||
0);
|
0);
|
||||||
if (!cls.demoplayback) {
|
if (!cls.demoplayback) {
|
||||||
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
||||||
SZ_Print (&cls.netchan.message, va ("setinfo %s %d", info_key,
|
SZ_Print (&cls.netchan.message, va (0, "setinfo %s %d",
|
||||||
ahdr->crc));
|
info_key, ahdr->crc));
|
||||||
}
|
}
|
||||||
if (!cl.model_precache[i]->aliashdr)
|
if (!cl.model_precache[i]->aliashdr)
|
||||||
Cache_Release (&cl.model_precache[i]->cache);
|
Cache_Release (&cl.model_precache[i]->cache);
|
||||||
|
@ -402,7 +403,7 @@ Model_NextDownload (void)
|
||||||
if (!cls.demoplayback) {
|
if (!cls.demoplayback) {
|
||||||
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
||||||
MSG_WriteString (&cls.netchan.message,
|
MSG_WriteString (&cls.netchan.message,
|
||||||
va (prespawn_name, cl.servercount,
|
va (0, prespawn_name, cl.servercount,
|
||||||
cl.worldmodel->checksum2));
|
cl.worldmodel->checksum2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -423,7 +424,7 @@ Sound_NextDownload (void)
|
||||||
for (; cl.sound_name[cls.downloadnumber][0];
|
for (; cl.sound_name[cls.downloadnumber][0];
|
||||||
cls.downloadnumber++) {
|
cls.downloadnumber++) {
|
||||||
s = cl.sound_name[cls.downloadnumber];
|
s = cl.sound_name[cls.downloadnumber];
|
||||||
if (!CL_CheckOrDownloadFile (va ("sound/%s", s)))
|
if (!CL_CheckOrDownloadFile (va (0, "sound/%s", s)))
|
||||||
return; // started a download
|
return; // started a download
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -443,7 +444,7 @@ Sound_NextDownload (void)
|
||||||
if (!cls.demoplayback) {
|
if (!cls.demoplayback) {
|
||||||
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
||||||
MSG_WriteString (&cls.netchan.message,
|
MSG_WriteString (&cls.netchan.message,
|
||||||
va (modellist_name, cl.servercount, 0));
|
va (0, modellist_name, cl.servercount, 0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -472,7 +473,7 @@ void
|
||||||
CL_FinishDownload (void)
|
CL_FinishDownload (void)
|
||||||
{
|
{
|
||||||
Qclose (cls.download);
|
Qclose (cls.download);
|
||||||
VID_SetCaption (va ("Connecting to %s", cls.servername->str));
|
VID_SetCaption (va (0, "Connecting to %s", cls.servername->str));
|
||||||
|
|
||||||
// rename the temp file to it's final name
|
// rename the temp file to it's final name
|
||||||
if (strcmp (cls.downloadtempname->str, cls.downloadname->str)) {
|
if (strcmp (cls.downloadtempname->str, cls.downloadname->str)) {
|
||||||
|
@ -662,8 +663,8 @@ CL_ParseDownload (void)
|
||||||
if (percent != 100) {
|
if (percent != 100) {
|
||||||
// request next block
|
// request next block
|
||||||
if (percent != cls.downloadpercent)
|
if (percent != cls.downloadpercent)
|
||||||
VID_SetCaption (va ("Downloading %s %d%%", cls.downloadname->str,
|
VID_SetCaption (va (0, "Downloading %s %d%%",
|
||||||
percent));
|
cls.downloadname->str, percent));
|
||||||
cls.downloadpercent = percent;
|
cls.downloadpercent = percent;
|
||||||
|
|
||||||
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
||||||
|
@ -842,7 +843,7 @@ CL_ParseServerData (void)
|
||||||
if (!cls.demoplayback) {
|
if (!cls.demoplayback) {
|
||||||
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
||||||
MSG_WriteString (&cls.netchan.message,
|
MSG_WriteString (&cls.netchan.message,
|
||||||
va (soundlist_name, cl.servercount, 0));
|
va (0, soundlist_name, cl.servercount, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
// now waiting for downloads, etc
|
// now waiting for downloads, etc
|
||||||
|
@ -878,7 +879,7 @@ CL_ParseSoundlist (void)
|
||||||
if (n && !cls.demoplayback) {
|
if (n && !cls.demoplayback) {
|
||||||
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
||||||
MSG_WriteString (&cls.netchan.message,
|
MSG_WriteString (&cls.netchan.message,
|
||||||
va (soundlist_name, cl.servercount, n));
|
va (0, soundlist_name, cl.servercount, n));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -929,7 +930,7 @@ CL_ParseModellist (void)
|
||||||
if (!cls.demoplayback) {
|
if (!cls.demoplayback) {
|
||||||
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
||||||
MSG_WriteString (&cls.netchan.message,
|
MSG_WriteString (&cls.netchan.message,
|
||||||
va (modellist_name, cl.servercount, n));
|
va (0, modellist_name, cl.servercount, n));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1095,7 +1096,8 @@ CL_ProcessUserInfo (int slot, player_info_t *player)
|
||||||
while (!(player->name = Info_Key (player->userinfo, "name"))) {
|
while (!(player->name = Info_Key (player->userinfo, "name"))) {
|
||||||
if (player->userid)
|
if (player->userid)
|
||||||
Info_SetValueForKey (player->userinfo, "name",
|
Info_SetValueForKey (player->userinfo, "name",
|
||||||
va ("user-%i [exploit]", player->userid), 1);
|
va (0, "user-%i [exploit]",
|
||||||
|
player->userid), 1);
|
||||||
else
|
else
|
||||||
Info_SetValueForKey (player->userinfo, "name", "", 1);
|
Info_SetValueForKey (player->userinfo, "name", "", 1);
|
||||||
}
|
}
|
||||||
|
@ -1248,7 +1250,8 @@ CL_SetStat (int stat, int value)
|
||||||
break;
|
break;
|
||||||
case STAT_HEALTH:
|
case STAT_HEALTH:
|
||||||
if (cl_player_health_e->func)
|
if (cl_player_health_e->func)
|
||||||
GIB_Event_Callback (cl_player_health_e, 1, va ("%i", value));
|
GIB_Event_Callback (cl_player_health_e, 1,
|
||||||
|
va (0, "%i", value));
|
||||||
if (value <= 0)
|
if (value <= 0)
|
||||||
Team_Dead ();
|
Team_Dead ();
|
||||||
break;
|
break;
|
||||||
|
@ -1331,7 +1334,7 @@ CL_ParseServerMessage (void)
|
||||||
break; // end of message
|
break; // end of message
|
||||||
}
|
}
|
||||||
|
|
||||||
SHOWNET (va ("%s(%d)", svc_strings[cmd], cmd));
|
SHOWNET (va (0, "%s(%d)", svc_strings[cmd], cmd));
|
||||||
|
|
||||||
// other commands
|
// other commands
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
|
|
|
@ -78,7 +78,8 @@ Skin_NextDownload (void)
|
||||||
//XXX Skin_Find (sc);
|
//XXX Skin_Find (sc);
|
||||||
if (noskins->int_val) //XXX FIXME
|
if (noskins->int_val) //XXX FIXME
|
||||||
continue;
|
continue;
|
||||||
//XXX if (!CL_CheckOrDownloadFile (va ("skins/%s.pcx", sc->skin->name)))
|
//XXX if (!CL_CheckOrDownloadFile (va (0, "skins/%s.pcx",
|
||||||
|
// sc->skin->name)))
|
||||||
//XXX return; // started a download
|
//XXX return; // started a download
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,7 +100,7 @@ Skin_NextDownload (void)
|
||||||
// get next signon phase
|
// get next signon phase
|
||||||
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
MSG_WriteByte (&cls.netchan.message, clc_stringcmd);
|
||||||
MSG_WriteString (&cls.netchan.message,
|
MSG_WriteString (&cls.netchan.message,
|
||||||
va ("begin %i", cl.servercount));
|
va (0, "begin %i", cl.servercount));
|
||||||
Cache_Report (); // print remaining memory
|
Cache_Report (); // print remaining memory
|
||||||
}
|
}
|
||||||
CL_SetState (ca_active);
|
CL_SetState (ca_active);
|
||||||
|
|
|
@ -575,7 +575,7 @@ MSL_ParseServerList (const char *msl_data)
|
||||||
unsigned int msl_ptr;
|
unsigned int msl_ptr;
|
||||||
|
|
||||||
for (msl_ptr = 0; msl_ptr < strlen (msl_data); msl_ptr = msl_ptr + 6) {
|
for (msl_ptr = 0; msl_ptr < strlen (msl_data); msl_ptr = msl_ptr + 6) {
|
||||||
slist = SL_Add (slist, va ("%i.%i.%i.%i:%i",
|
slist = SL_Add (slist, va (0, "%i.%i.%i.%i:%i",
|
||||||
(byte) msl_data[msl_ptr],
|
(byte) msl_data[msl_ptr],
|
||||||
(byte) msl_data[msl_ptr+1],
|
(byte) msl_data[msl_ptr+1],
|
||||||
(byte) msl_data[msl_ptr+2],
|
(byte) msl_data[msl_ptr+2],
|
||||||
|
|
|
@ -150,7 +150,7 @@ CF_BuildQuota (void)
|
||||||
cf_cursize = 0;
|
cf_cursize = 0;
|
||||||
|
|
||||||
while ((i = readdir (dir))) {
|
while ((i = readdir (dir))) {
|
||||||
cf_cursize += CF_GetFileSize (va ("%s/%s", path->str, i->d_name));
|
cf_cursize += CF_GetFileSize (va (0, "%s/%s", path->str, i->d_name));
|
||||||
}
|
}
|
||||||
closedir (dir);
|
closedir (dir);
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,7 +136,7 @@ locs_load (const char *filename)
|
||||||
vec3_t loc;
|
vec3_t loc;
|
||||||
QFile *file;
|
QFile *file;
|
||||||
|
|
||||||
tmp = va ("maps/%s", filename);
|
tmp = va (0, "maps/%s", filename);
|
||||||
file = QFS_FOpenFile (tmp);
|
file = QFS_FOpenFile (tmp);
|
||||||
if (!file) {
|
if (!file) {
|
||||||
Sys_Printf ("Couldn't load %s\n", tmp);
|
Sys_Printf ("Couldn't load %s\n", tmp);
|
||||||
|
@ -196,7 +196,7 @@ locs_save (const char *filename, qboolean gz)
|
||||||
|
|
||||||
if (gz) {
|
if (gz) {
|
||||||
if (strcmp (QFS_FileExtension (filename), ".gz") != 0)
|
if (strcmp (QFS_FileExtension (filename), ".gz") != 0)
|
||||||
filename = va ("%s.gz", filename);
|
filename = va (0, "%s.gz", filename);
|
||||||
locfd = QFS_Open (filename, "z9w+");
|
locfd = QFS_Open (filename, "z9w+");
|
||||||
} else
|
} else
|
||||||
locfd = QFS_Open (filename, "w+");
|
locfd = QFS_Open (filename, "w+");
|
||||||
|
|
|
@ -1605,7 +1605,7 @@ draw_net (view_t *view)
|
||||||
int ping = cl.players[cl.playernum].ping;
|
int ping = cl.players[cl.playernum].ping;
|
||||||
|
|
||||||
ping = bound (0, ping, 999);
|
ping = bound (0, ping, 999);
|
||||||
draw_string (view, 0, 0, va ("%3d ms ", ping));
|
draw_string (view, 0, 0, va (0, "%3d ms ", ping));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hud_ping->int_val && hud_pl->int_val)
|
if (hud_ping->int_val && hud_pl->int_val)
|
||||||
|
@ -1615,7 +1615,7 @@ draw_net (view_t *view)
|
||||||
int lost = CL_CalcNet ();
|
int lost = CL_CalcNet ();
|
||||||
|
|
||||||
lost = bound (0, lost, 999);
|
lost = bound (0, lost, 999);
|
||||||
draw_string (view, 56, 0, va ("%3d pl", lost));
|
draw_string (view, 56, 0, va (0, "%3d pl", lost));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1950,8 +1950,8 @@ Sbar_Init (void)
|
||||||
Key_KeydestCallback (sbar_keydest_callback);
|
Key_KeydestCallback (sbar_keydest_callback);
|
||||||
|
|
||||||
for (i = 0; i < 10; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
sb_nums[0][i] = r_funcs->Draw_PicFromWad (va ("num_%i", i));
|
sb_nums[0][i] = r_funcs->Draw_PicFromWad (va (0, "num_%i", i));
|
||||||
sb_nums[1][i] = r_funcs->Draw_PicFromWad (va ("anum_%i", i));
|
sb_nums[1][i] = r_funcs->Draw_PicFromWad (va (0, "anum_%i", i));
|
||||||
}
|
}
|
||||||
|
|
||||||
sb_nums[0][10] = r_funcs->Draw_PicFromWad ("num_minus");
|
sb_nums[0][10] = r_funcs->Draw_PicFromWad ("num_minus");
|
||||||
|
@ -1977,19 +1977,26 @@ Sbar_Init (void)
|
||||||
sb_weapons[1][6] = r_funcs->Draw_PicFromWad ("inv2_lightng");
|
sb_weapons[1][6] = r_funcs->Draw_PicFromWad ("inv2_lightng");
|
||||||
|
|
||||||
for (i = 0; i < 5; i++) {
|
for (i = 0; i < 5; i++) {
|
||||||
sb_weapons[2 + i][0] = r_funcs->Draw_PicFromWad (va ("inva%i_shotgun",
|
sb_weapons[2 + i][0] = r_funcs->Draw_PicFromWad (va (0,
|
||||||
|
"inva%i_shotgun",
|
||||||
i + 1));
|
i + 1));
|
||||||
sb_weapons[2 + i][1] = r_funcs->Draw_PicFromWad (va ("inva%i_sshotgun",
|
sb_weapons[2 + i][1] = r_funcs->Draw_PicFromWad (va (0,
|
||||||
|
"inva%i_sshotgun",
|
||||||
i + 1));
|
i + 1));
|
||||||
sb_weapons[2 + i][2] = r_funcs->Draw_PicFromWad (va ("inva%i_nailgun",
|
sb_weapons[2 + i][2] = r_funcs->Draw_PicFromWad (va (0,
|
||||||
|
"inva%i_nailgun",
|
||||||
i + 1));
|
i + 1));
|
||||||
sb_weapons[2 + i][3] = r_funcs->Draw_PicFromWad (va ("inva%i_snailgun",
|
sb_weapons[2 + i][3] = r_funcs->Draw_PicFromWad (va (0,
|
||||||
|
"inva%i_snailgun",
|
||||||
i + 1));
|
i + 1));
|
||||||
sb_weapons[2 + i][4] = r_funcs->Draw_PicFromWad (va ("inva%i_rlaunch",
|
sb_weapons[2 + i][4] = r_funcs->Draw_PicFromWad (va (0,
|
||||||
|
"inva%i_rlaunch",
|
||||||
i + 1));
|
i + 1));
|
||||||
sb_weapons[2 + i][5] = r_funcs->Draw_PicFromWad (va ("inva%i_srlaunch",
|
sb_weapons[2 + i][5] = r_funcs->Draw_PicFromWad (va (0,
|
||||||
|
"inva%i_srlaunch",
|
||||||
i + 1));
|
i + 1));
|
||||||
sb_weapons[2 + i][6] = r_funcs->Draw_PicFromWad (va ("inva%i_lightng",
|
sb_weapons[2 + i][6] = r_funcs->Draw_PicFromWad (va (0,
|
||||||
|
"inva%i_lightng",
|
||||||
i + 1));
|
i + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -250,7 +250,7 @@ SV_Fraglogfile_f (void)
|
||||||
}
|
}
|
||||||
name = dstring_new ();
|
name = dstring_new ();
|
||||||
if (!QFS_NextFilename (name,
|
if (!QFS_NextFilename (name,
|
||||||
va ("%s/frag_", qfs_gamedir->dir.def), ".log")) {
|
va (0, "%s/frag_", qfs_gamedir->dir.def), ".log")) {
|
||||||
SV_Printf ("Can't open any logfiles.\n");
|
SV_Printf ("Can't open any logfiles.\n");
|
||||||
sv_fraglogfile = NULL;
|
sv_fraglogfile = NULL;
|
||||||
} else {
|
} else {
|
||||||
|
@ -396,29 +396,29 @@ nice_time (float time)
|
||||||
|
|
||||||
#if 0 //FIXME ditch or cvar?
|
#if 0 //FIXME ditch or cvar?
|
||||||
if (t < 60) {
|
if (t < 60) {
|
||||||
return va ("%ds", t);
|
return va (0, "%ds", t);
|
||||||
} else if (t < 600) {
|
} else if (t < 600) {
|
||||||
return va ("%dm%02ds", t / 60, t % 60);
|
return va (0, "%dm%02ds", t / 60, t % 60);
|
||||||
} else if (t < 3600) {
|
} else if (t < 3600) {
|
||||||
return va ("%dm", t / 60);
|
return va (0, "%dm", t / 60);
|
||||||
} else if (t < 36000) {
|
} else if (t < 36000) {
|
||||||
t /= 60;
|
t /= 60;
|
||||||
return va ("%dh%02dm", t / 60, t % 60);
|
return va (0, "%dh%02dm", t / 60, t % 60);
|
||||||
} else if (t < 86400) {
|
} else if (t < 86400) {
|
||||||
return va ("%dh", t / 3600);
|
return va (0, "%dh", t / 3600);
|
||||||
} else {
|
} else {
|
||||||
t /= 3600;
|
t /= 3600;
|
||||||
return va ("%dd%02dh", t / 24, t % 24);
|
return va (0, "%dd%02dh", t / 24, t % 24);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (t < 60) {
|
if (t < 60) {
|
||||||
return va ("%ds", t);
|
return va (0, "%ds", t);
|
||||||
} else if (t < 3600) {
|
} else if (t < 3600) {
|
||||||
return va ("%dm%02ds", t / 60, t % 60);
|
return va (0, "%dm%02ds", t / 60, t % 60);
|
||||||
} else if (t < 86400) {
|
} else if (t < 86400) {
|
||||||
return va ("%dh%02dm%02ds", t / 3600, (t / 60) % 60, t % 60);
|
return va (0, "%dh%02dm%02ds", t / 3600, (t / 60) % 60, t % 60);
|
||||||
} else {
|
} else {
|
||||||
return va ("%dd%02dh%02dm%02ds",
|
return va (0, "%dd%02dh%02dm%02ds",
|
||||||
t / 86400, (t / 3600) % 24, (t / 60) % 60, t % 60);
|
t / 86400, (t / 3600) % 24, (t / 60) % 60, t % 60);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -742,15 +742,15 @@ SV_Ban_f (void)
|
||||||
if (argc > argr) {
|
if (argc > argr) {
|
||||||
reason = Cmd_Args (argr);
|
reason = Cmd_Args (argr);
|
||||||
SV_BroadcastPrintf (PRINT_HIGH, "Admin Banned user %s %s: %s\n",
|
SV_BroadcastPrintf (PRINT_HIGH, "Admin Banned user %s %s: %s\n",
|
||||||
cl->name, mins ? va ("for %.1f minutes", mins)
|
cl->name, mins ? va (0, "for %.1f minutes", mins)
|
||||||
: "permanently", reason);
|
: "permanently", reason);
|
||||||
} else {
|
} else {
|
||||||
SV_BroadcastPrintf (PRINT_HIGH, "Admin Banned user %s %s\n",
|
SV_BroadcastPrintf (PRINT_HIGH, "Admin Banned user %s %s\n",
|
||||||
cl->name, mins ? va ("for %.1f minutes", mins)
|
cl->name, mins ? va (0, "for %.1f minutes", mins)
|
||||||
: "permanently");
|
: "permanently");
|
||||||
}
|
}
|
||||||
SV_DropClient (cl);
|
SV_DropClient (cl);
|
||||||
Cmd_ExecuteString (va ("addip %s %f",
|
Cmd_ExecuteString (va (0, "addip %s %f",
|
||||||
NET_BaseAdrToString (cl->netchan.remote_address),
|
NET_BaseAdrToString (cl->netchan.remote_address),
|
||||||
mins), src_command);
|
mins), src_command);
|
||||||
}
|
}
|
||||||
|
@ -812,7 +812,7 @@ SV_ConSay (const char *prefix, client_t *client)
|
||||||
dbuf = SVR_WriteBegin (dem_all, 0, strlen (text->str) + 7);
|
dbuf = SVR_WriteBegin (dem_all, 0, strlen (text->str) + 7);
|
||||||
MSG_WriteByte (dbuf, svc_print);
|
MSG_WriteByte (dbuf, svc_print);
|
||||||
MSG_WriteByte (dbuf, PRINT_HIGH);
|
MSG_WriteByte (dbuf, PRINT_HIGH);
|
||||||
MSG_WriteString (dbuf, va ("%s\n", text->str));
|
MSG_WriteString (dbuf, va (0, "%s\n", text->str));
|
||||||
MSG_WriteByte (dbuf, svc_print);
|
MSG_WriteByte (dbuf, svc_print);
|
||||||
MSG_WriteByte (dbuf, PRINT_CHAT);
|
MSG_WriteByte (dbuf, PRINT_CHAT);
|
||||||
MSG_WriteString (dbuf, "");
|
MSG_WriteString (dbuf, "");
|
||||||
|
@ -1136,7 +1136,7 @@ SV_Snap (int uid)
|
||||||
cl->uploadfn = dstring_new ();
|
cl->uploadfn = dstring_new ();
|
||||||
|
|
||||||
if (!QFS_NextFilename (cl->uploadfn,
|
if (!QFS_NextFilename (cl->uploadfn,
|
||||||
va ("%s/snap/%d-", qfs_gamedir->dir.def, uid),
|
va (0, "%s/snap/%d-", qfs_gamedir->dir.def, uid),
|
||||||
".pcx")) {
|
".pcx")) {
|
||||||
SV_Printf ("Snap: Couldn't create a file, clean some out.\n");
|
SV_Printf ("Snap: Couldn't create a file, clean some out.\n");
|
||||||
dstring_delete (cl->uploadfn);
|
dstring_delete (cl->uploadfn);
|
||||||
|
|
|
@ -191,7 +191,7 @@ SV_Stop (int reason)
|
||||||
|
|
||||||
sv_redirected = RD_NONE; // onrecord script is called always
|
sv_redirected = RD_NONE; // onrecord script is called always
|
||||||
// from the console
|
// from the console
|
||||||
Cmd_TokenizeString (va ("script %s \"%s\" \"%s\" \"%s\" %s",
|
Cmd_TokenizeString (va (0, "script %s \"%s\" \"%s\" \"%s\" %s",
|
||||||
sv_onrecordfinish->string, demo.path->str,
|
sv_onrecordfinish->string, demo.path->str,
|
||||||
serverdemo->string,
|
serverdemo->string,
|
||||||
path, p != NULL ? p + 1 : ""));
|
path, p != NULL ? p + 1 : ""));
|
||||||
|
@ -454,7 +454,7 @@ SV_Record (char *name)
|
||||||
|
|
||||||
// send server info string
|
// send server info string
|
||||||
MSG_WriteByte (&buf, svc_stufftext);
|
MSG_WriteByte (&buf, svc_stufftext);
|
||||||
MSG_WriteString (&buf, va ("fullserverinfo \"%s\"\n",
|
MSG_WriteString (&buf, va (0, "fullserverinfo \"%s\"\n",
|
||||||
Info_MakeString (svs.info, 0)));
|
Info_MakeString (svs.info, 0)));
|
||||||
|
|
||||||
// flush packet
|
// flush packet
|
||||||
|
@ -524,7 +524,7 @@ SV_Record (char *name)
|
||||||
}
|
}
|
||||||
|
|
||||||
MSG_WriteByte (&buf, svc_stufftext);
|
MSG_WriteByte (&buf, svc_stufftext);
|
||||||
MSG_WriteString (&buf, va ("cmd spawn %i 0\n", svs.spawncount));
|
MSG_WriteString (&buf, va (0, "cmd spawn %i 0\n", svs.spawncount));
|
||||||
|
|
||||||
if (buf.cursize) {
|
if (buf.cursize) {
|
||||||
SV_WriteRecordDemoMessage (&buf);
|
SV_WriteRecordDemoMessage (&buf);
|
||||||
|
@ -576,7 +576,7 @@ SV_Record (char *name)
|
||||||
// get the client to check and download skins
|
// get the client to check and download skins
|
||||||
// when that is completed, a begin command will be issued
|
// when that is completed, a begin command will be issued
|
||||||
MSG_WriteByte (&buf, svc_stufftext);
|
MSG_WriteByte (&buf, svc_stufftext);
|
||||||
MSG_WriteString (&buf, va ("skins\n"));
|
MSG_WriteString (&buf, va (0, "skins\n"));
|
||||||
|
|
||||||
SV_WriteRecordDemoMessage (&buf);
|
SV_WriteRecordDemoMessage (&buf);
|
||||||
|
|
||||||
|
@ -797,7 +797,7 @@ Demo_Init (void)
|
||||||
sv_demoPings = Cvar_Get ("sv_demoPings", "3", CVAR_NONE, 0, "FIXME");
|
sv_demoPings = Cvar_Get ("sv_demoPings", "3", CVAR_NONE, 0, "FIXME");
|
||||||
sv_demoNoVis = Cvar_Get ("sv_demoNoVis", "1", CVAR_NONE, 0, "FIXME");
|
sv_demoNoVis = Cvar_Get ("sv_demoNoVis", "1", CVAR_NONE, 0, "FIXME");
|
||||||
sv_demoUseCache = Cvar_Get ("sv_demoUseCache", "0", CVAR_NONE, 0, "FIXME");
|
sv_demoUseCache = Cvar_Get ("sv_demoUseCache", "0", CVAR_NONE, 0, "FIXME");
|
||||||
sv_demoCacheSize = Cvar_Get ("sv_demoCacheSize", va ("%d", size / 1024),
|
sv_demoCacheSize = Cvar_Get ("sv_demoCacheSize", va (0, "%d", size / 1024),
|
||||||
CVAR_ROM, 0, "FIXME");
|
CVAR_ROM, 0, "FIXME");
|
||||||
sv_demoMaxSize = Cvar_Get ("sv_demoMaxSize", "20480", CVAR_NONE, 0,
|
sv_demoMaxSize = Cvar_Get ("sv_demoMaxSize", "20480", CVAR_NONE, 0,
|
||||||
"FIXME");
|
"FIXME");
|
||||||
|
|
|
@ -374,7 +374,7 @@ SV_SpawnServer (const char *server)
|
||||||
SV_LoadProgs ();
|
SV_LoadProgs ();
|
||||||
SV_FreeAllEdictLeafs ();
|
SV_FreeAllEdictLeafs ();
|
||||||
SV_SetupUserCommands ();
|
SV_SetupUserCommands ();
|
||||||
Info_SetValueForStarKey (svs.info, "*progs", va ("%i", sv_pr_state.crc),
|
Info_SetValueForStarKey (svs.info, "*progs", va (0, "%i", sv_pr_state.crc),
|
||||||
!sv_highchars->int_val);
|
!sv_highchars->int_val);
|
||||||
|
|
||||||
// leave slots at start for only clients
|
// leave slots at start for only clients
|
||||||
|
@ -437,7 +437,7 @@ SV_SpawnServer (const char *server)
|
||||||
|
|
||||||
// load and spawn all other entities
|
// load and spawn all other entities
|
||||||
*sv_globals.time = sv.time;
|
*sv_globals.time = sv.time;
|
||||||
ent_file = QFS_VOpenFile (va ("maps/%s.ent", server), 0,
|
ent_file = QFS_VOpenFile (va (0, "maps/%s.ent", server), 0,
|
||||||
sv.worldmodel->vpath);
|
sv.worldmodel->vpath);
|
||||||
if ((buf = QFS_LoadFile (ent_file, 0))) {
|
if ((buf = QFS_LoadFile (ent_file, 0))) {
|
||||||
ED_LoadFromFile (&sv_pr_state, (char *) buf);
|
ED_LoadFromFile (&sv_pr_state, (char *) buf);
|
||||||
|
|
|
@ -368,7 +368,7 @@ SV_DropClient (client_t *drop)
|
||||||
// Trigger GIB event
|
// Trigger GIB event
|
||||||
if (sv_client_disconnect_e->func)
|
if (sv_client_disconnect_e->func)
|
||||||
GIB_Event_Callback (sv_client_disconnect_e, 1,
|
GIB_Event_Callback (sv_client_disconnect_e, 1,
|
||||||
va ("%u", drop->userid));
|
va (0, "%u", drop->userid));
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -1459,7 +1459,7 @@ SV_AddIP_f (void)
|
||||||
bantime / 60);
|
bantime / 60);
|
||||||
else
|
else
|
||||||
strncpy (timestr, "permanently", sizeof (timestr));
|
strncpy (timestr, "permanently", sizeof (timestr));
|
||||||
text = va ("You are %s %s\n%s",
|
text = va (0, "You are %s %s\n%s",
|
||||||
typestr, timestr, type == ft_ban ? "" :
|
typestr, timestr, type == ft_ban ? "" :
|
||||||
"\nReconnecting won't help...");
|
"\nReconnecting won't help...");
|
||||||
MSG_ReliableWrite_Begin (&cl->backbuf, svc_centerprint,
|
MSG_ReliableWrite_Begin (&cl->backbuf, svc_centerprint,
|
||||||
|
@ -1884,7 +1884,7 @@ SV_CheckVars (void)
|
||||||
Info_SetValueForKey (svs.info, "needpass", "",
|
Info_SetValueForKey (svs.info, "needpass", "",
|
||||||
!sv_highchars->int_val);
|
!sv_highchars->int_val);
|
||||||
else
|
else
|
||||||
Info_SetValueForKey (svs.info, "needpass", va ("%i", v),
|
Info_SetValueForKey (svs.info, "needpass", va (0, "%i", v),
|
||||||
!sv_highchars->int_val);
|
!sv_highchars->int_val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1411,7 +1411,7 @@ PF_changelevel (progs_t *pr)
|
||||||
last_spawncount = svs.spawncount;
|
last_spawncount = svs.spawncount;
|
||||||
|
|
||||||
s = P_GSTRING (pr, 0);
|
s = P_GSTRING (pr, 0);
|
||||||
Cbuf_AddText (sv_cbuf, va ("map %s\n", s));
|
Cbuf_AddText (sv_cbuf, va (0, "map %s\n", s));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1460,13 +1460,13 @@ PF_logfrag (progs_t *pr)
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%d", u2);
|
snprintf(buf, sizeof(buf), "%d", u2);
|
||||||
|
|
||||||
GIB_Event_Callback (sv_frag_e, 4, type1, va ("%d", u1), type2, buf);
|
GIB_Event_Callback (sv_frag_e, 4, type1, va (0, "%d", u1), type2, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e1 < 1 || e1 > MAX_CLIENTS || e2 < 1 || e2 > MAX_CLIENTS)
|
if (e1 < 1 || e1 > MAX_CLIENTS || e2 < 1 || e2 > MAX_CLIENTS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
s = va ("\\%s\\%s\\\n", svs.clients[e1 - 1].name,
|
s = va (0, "\\%s\\%s\\\n", svs.clients[e1 - 1].name,
|
||||||
svs.clients[e2 - 1].name);
|
svs.clients[e2 - 1].name);
|
||||||
|
|
||||||
SZ_Print (&svs.log[svs.logsequence & 1], s);
|
SZ_Print (&svs.log[svs.logsequence & 1], s);
|
||||||
|
@ -1511,7 +1511,7 @@ PF_infokey (progs_t *pr)
|
||||||
else if (!strcmp (key, "ping")) {
|
else if (!strcmp (key, "ping")) {
|
||||||
int ping = SV_CalcPing (&svs.clients[e1 - 1]);
|
int ping = SV_CalcPing (&svs.clients[e1 - 1]);
|
||||||
|
|
||||||
value = va ("%d", ping);
|
value = va (0, "%d", ping);
|
||||||
} else
|
} else
|
||||||
value = Info_ValueForKey (svs.clients[e1 - 1].userinfo, key);
|
value = Info_ValueForKey (svs.clients[e1 - 1].userinfo, key);
|
||||||
} else
|
} else
|
||||||
|
@ -1862,7 +1862,7 @@ PF_SV_FreeClient (progs_t *pr)
|
||||||
cl->state = cs_free;
|
cl->state = cs_free;
|
||||||
|
|
||||||
//if (sv_client_disconnect_e->func)
|
//if (sv_client_disconnect_e->func)
|
||||||
// GIB_Event_Callback (sv_client_disconnect_e, 2, va ("%u", cl->userid),
|
// GIB_Event_Callback (sv_client_disconnect_e, 2, va (0, "%u", cl->userid),
|
||||||
// "server");
|
// "server");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -451,7 +451,7 @@ PF_log (progs_t *pr)
|
||||||
char *text;
|
char *text;
|
||||||
QFile *file;
|
QFile *file;
|
||||||
|
|
||||||
name = va ("%s/%s.log", qfs_gamedir->dir.def, P_GSTRING (pr, 0));
|
name = va (0, "%s/%s.log", qfs_gamedir->dir.def, P_GSTRING (pr, 0));
|
||||||
file = QFS_Open (name, "a");
|
file = QFS_Open (name, "a");
|
||||||
|
|
||||||
text = PF_VarString (pr, 2);
|
text = PF_VarString (pr, 2);
|
||||||
|
|
|
@ -194,9 +194,9 @@ qtv_prespawn_f (sv_qtv_t *proxy)
|
||||||
buf = 0;
|
buf = 0;
|
||||||
|
|
||||||
if (buf == sv.num_signon_buffers - 1)
|
if (buf == sv.num_signon_buffers - 1)
|
||||||
command = va ("cmd spawn %i 0\n", svs.spawncount);
|
command = va (0, "cmd spawn %i 0\n", svs.spawncount);
|
||||||
else
|
else
|
||||||
command = va ("cmd prespawn %i %i\n", svs.spawncount, buf + 1);
|
command = va (0, "cmd prespawn %i %i\n", svs.spawncount, buf + 1);
|
||||||
size = (3 + sv.signon_buffer_size[buf]) + (1 + strlen (command) + 1);
|
size = (3 + sv.signon_buffer_size[buf]) + (1 + strlen (command) + 1);
|
||||||
|
|
||||||
msg = MSG_ReliableCheckBlock (&proxy->backbuf, size);
|
msg = MSG_ReliableCheckBlock (&proxy->backbuf, size);
|
||||||
|
@ -534,7 +534,7 @@ SV_qtvChanging (void)
|
||||||
int i, len;
|
int i, len;
|
||||||
const char *msg;
|
const char *msg;
|
||||||
|
|
||||||
msg = va ("%cchanging", qtv_stringcmd);
|
msg = va (0, "%cchanging", qtv_stringcmd);
|
||||||
len = strlen (msg) + 1;
|
len = strlen (msg) + 1;
|
||||||
for (i = 0; i < MAX_PROXIES; i++) {
|
for (i = 0; i < MAX_PROXIES; i++) {
|
||||||
proxy = proxies + i;
|
proxy = proxies + i;
|
||||||
|
@ -555,7 +555,7 @@ SV_qtvReconnect (void)
|
||||||
int i, len;
|
int i, len;
|
||||||
const char *msg;
|
const char *msg;
|
||||||
|
|
||||||
msg = va ("%creconnect", qtv_stringcmd);
|
msg = va (0, "%creconnect", qtv_stringcmd);
|
||||||
len = strlen (msg) + 1;
|
len = strlen (msg) + 1;
|
||||||
for (i = 0; i < MAX_PROXIES; i++) {
|
for (i = 0; i < MAX_PROXIES; i++) {
|
||||||
proxy = proxies + i;
|
proxy = proxies + i;
|
||||||
|
|
|
@ -55,7 +55,7 @@ draw_cpu (view_t *view)
|
||||||
cpu = (svs.stats.latched_active + svs.stats.latched_idle);
|
cpu = (svs.stats.latched_active + svs.stats.latched_idle);
|
||||||
cpu = 100 * svs.stats.latched_active / cpu;
|
cpu = 100 * svs.stats.latched_active / cpu;
|
||||||
|
|
||||||
cpu_str = va ("[CPU: %3d%%]", (int) cpu);
|
cpu_str = va (0, "[CPU: %3d%%]", (int) cpu);
|
||||||
for (s = cpu_str, d = sb->text + view->xrel; *s; s++)
|
for (s = cpu_str, d = sb->text + view->xrel; *s; s++)
|
||||||
*d++ = *s;
|
*d++ = *s;
|
||||||
if (cpu > 70.0) {
|
if (cpu > 70.0) {
|
||||||
|
@ -74,7 +74,7 @@ draw_rec (view_t *view)
|
||||||
const char *s;
|
const char *s;
|
||||||
char *d;
|
char *d;
|
||||||
|
|
||||||
str = va ("[REC: %d]", SVR_NumRecorders ());
|
str = va (0, "[REC: %d]", SVR_NumRecorders ());
|
||||||
for (s = str, d = sb->text + view->xrel; *s; s++)
|
for (s = str, d = sb->text + view->xrel; *s; s++)
|
||||||
*d++ = *s;
|
*d++ = *s;
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,7 +141,7 @@ SV_WriteWorldVars (netchan_t *netchan)
|
||||||
// send server info string
|
// send server info string
|
||||||
MSG_WriteByte (&netchan->message, svc_stufftext);
|
MSG_WriteByte (&netchan->message, svc_stufftext);
|
||||||
MSG_WriteString (&netchan->message,
|
MSG_WriteString (&netchan->message,
|
||||||
va ("fullserverinfo \"%s\"\n",
|
va (0, "fullserverinfo \"%s\"\n",
|
||||||
Info_MakeString (svs.info, 0)));
|
Info_MakeString (svs.info, 0)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@ SV_New_f (void *unused)
|
||||||
// Trigger GIB connection event
|
// Trigger GIB connection event
|
||||||
if (sv_client_connect_e->func)
|
if (sv_client_connect_e->func)
|
||||||
GIB_Event_Callback (sv_client_connect_e, 1,
|
GIB_Event_Callback (sv_client_connect_e, 1,
|
||||||
va ("%u", host_client->userid));
|
va (0, "%u", host_client->userid));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -351,9 +351,9 @@ SV_PreSpawn_f (void *unused)
|
||||||
host_client->prespawned = true;
|
host_client->prespawned = true;
|
||||||
|
|
||||||
if (buf == sv.num_signon_buffers - 1)
|
if (buf == sv.num_signon_buffers - 1)
|
||||||
command = va ("cmd spawn %i 0\n", svs.spawncount);
|
command = va (0, "cmd spawn %i 0\n", svs.spawncount);
|
||||||
else
|
else
|
||||||
command = va ("cmd prespawn %i %i\n", svs.spawncount, buf + 1);
|
command = va (0, "cmd prespawn %i %i\n", svs.spawncount, buf + 1);
|
||||||
|
|
||||||
size = sv.signon_buffer_size[buf] + 1 + strlen (command) + 1;
|
size = sv.signon_buffer_size[buf] + 1 + strlen (command) + 1;
|
||||||
|
|
||||||
|
@ -605,7 +605,7 @@ SV_Begin_f (void *unused)
|
||||||
|
|
||||||
// Trigger GIB events
|
// Trigger GIB events
|
||||||
if (sv_client_spawn_e->func)
|
if (sv_client_spawn_e->func)
|
||||||
GIB_Event_Callback (sv_client_spawn_e, 1, va ("%u",
|
GIB_Event_Callback (sv_client_spawn_e, 1, va (0, "%u",
|
||||||
host_client->userid));
|
host_client->userid));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -787,7 +787,7 @@ SV_BeginDownload_f (void *unused)
|
||||||
MSG_ReliableWrite_Short (&host_client->backbuf, DL_HTTP);
|
MSG_ReliableWrite_Short (&host_client->backbuf, DL_HTTP);
|
||||||
MSG_ReliableWrite_Byte (&host_client->backbuf, 0);
|
MSG_ReliableWrite_Byte (&host_client->backbuf, 0);
|
||||||
MSG_ReliableWrite_String (&host_client->backbuf,
|
MSG_ReliableWrite_String (&host_client->backbuf,
|
||||||
va ("%s/%s", sv_http_url_base->string,
|
va (0, "%s/%s", sv_http_url_base->string,
|
||||||
ren ? qfs_foundfile.realname : name));
|
ren ? qfs_foundfile.realname : name));
|
||||||
MSG_ReliableWrite_String (&host_client->backbuf,
|
MSG_ReliableWrite_String (&host_client->backbuf,
|
||||||
ren ? qfs_foundfile.realname : "");
|
ren ? qfs_foundfile.realname : "");
|
||||||
|
@ -914,7 +914,7 @@ SV_Say (qboolean team)
|
||||||
dsprintf (text, fmt, host_client->name);
|
dsprintf (text, fmt, host_client->name);
|
||||||
|
|
||||||
if (sv_chat_e->func)
|
if (sv_chat_e->func)
|
||||||
GIB_Event_Callback (sv_chat_e, 2, va ("%i", host_client->userid), p,
|
GIB_Event_Callback (sv_chat_e, 2, va (0, "%i", host_client->userid), p,
|
||||||
type);
|
type);
|
||||||
|
|
||||||
dstring_appendstr (text, p);
|
dstring_appendstr (text, p);
|
||||||
|
@ -1201,7 +1201,7 @@ SV_SetUserinfo (client_t *client, const char *key, const char *value)
|
||||||
|
|
||||||
// trigger a GIB event
|
// trigger a GIB event
|
||||||
if (sv_setinfo_e->func)
|
if (sv_setinfo_e->func)
|
||||||
GIB_Event_Callback (sv_setinfo_e, 4, va("%d", client->userid),
|
GIB_Event_Callback (sv_setinfo_e, 4, va (0, "%d", client->userid),
|
||||||
key, oldvalue, value);
|
key, oldvalue, value);
|
||||||
|
|
||||||
if (sv_funcs.UserInfoChanged) {
|
if (sv_funcs.UserInfoChanged) {
|
||||||
|
|
|
@ -424,7 +424,7 @@ Locs_Init (void)
|
||||||
static const char *
|
static const char *
|
||||||
Team_F_Version (char *args)
|
Team_F_Version (char *args)
|
||||||
{
|
{
|
||||||
return va ("say %s", PACKAGE_STRING);
|
return va (0, "say %s", PACKAGE_STRING);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *
|
static const char *
|
||||||
|
@ -446,7 +446,7 @@ Team_F_Skins (char *args)
|
||||||
if (l == 0) {
|
if (l == 0) {
|
||||||
//XXXtotalfb = Skin_FbPercent (0);
|
//XXXtotalfb = Skin_FbPercent (0);
|
||||||
totalfb = 0;
|
totalfb = 0;
|
||||||
return va ("say Player models have %f%% brightness\n"
|
return va (0, "say Player models have %f%% brightness\n"
|
||||||
"say Average percent fullbright for all loaded skins is "
|
"say Average percent fullbright for all loaded skins is "
|
||||||
"%d.%d%%", allfb * 100, totalfb / 10, totalfb % 10);
|
"%d.%d%%", allfb * 100, totalfb / 10, totalfb % 10);
|
||||||
}
|
}
|
||||||
|
@ -455,8 +455,8 @@ Team_F_Skins (char *args)
|
||||||
totalfb = 0;
|
totalfb = 0;
|
||||||
|
|
||||||
if (totalfb >= 0)
|
if (totalfb >= 0)
|
||||||
return va ("say \"Skin %s is %d.%d%% fullbright\"", args, totalfb / 10,
|
return va (0, "say \"Skin %s is %d.%d%% fullbright\"",
|
||||||
totalfb % 10);
|
args, totalfb / 10, totalfb % 10);
|
||||||
else
|
else
|
||||||
return ("say \"Skin not currently loaded.\"");
|
return ("say \"Skin not currently loaded.\"");
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,7 +102,7 @@ load_file (progs_t *pr, const char *name, off_t *_size)
|
||||||
|
|
||||||
file = open_file (name, &size);
|
file = open_file (name, &size);
|
||||||
if (!file) {
|
if (!file) {
|
||||||
file = open_file (va ("%s.gz", name), &size);
|
file = open_file (va (0, "%s.gz", name), &size);
|
||||||
if (!file) {
|
if (!file) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,7 @@ load_file (progs_t *pr, const char *name, off_t *_size)
|
||||||
|
|
||||||
file = open_file (name, &size);
|
file = open_file (name, &size);
|
||||||
if (!file) {
|
if (!file) {
|
||||||
file = open_file (va ("%s.gz", name), &size);
|
file = open_file (va (0, "%s.gz", name), &size);
|
||||||
if (!file) {
|
if (!file) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -347,7 +347,7 @@ CreateBrushFaces (void)
|
||||||
GetVectorForKey (FoundEntity, "origin", offset);
|
GetVectorForKey (FoundEntity, "origin", offset);
|
||||||
|
|
||||||
SetKeyValue (CurrentEntity, "origin",
|
SetKeyValue (CurrentEntity, "origin",
|
||||||
va ("%g %g %g", VectorExpand (offset)));
|
va (0, "%g %g %g", VectorExpand (offset)));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < numbrushfaces; i++) {
|
for (i = 0; i < numbrushfaces; i++) {
|
||||||
|
|
|
@ -620,7 +620,7 @@ WriteEntitiesToString (void)
|
||||||
dstring_appendstr (buf, "{\n");
|
dstring_appendstr (buf, "{\n");
|
||||||
|
|
||||||
for (ep = entities[i].epairs; ep; ep = ep->next) {
|
for (ep = entities[i].epairs; ep; ep = ep->next) {
|
||||||
dstring_appendstr (buf, va ("\"%s\" \"%s\"\n",
|
dstring_appendstr (buf, va (0, "\"%s\" \"%s\"\n",
|
||||||
ep->key, ep->value));
|
ep->key, ep->value));
|
||||||
}
|
}
|
||||||
dstring_appendstr (buf, "}\n");
|
dstring_appendstr (buf, "}\n");
|
||||||
|
|
|
@ -359,13 +359,13 @@ unique_name (wad_t *wad, const char *name)
|
||||||
do {
|
do {
|
||||||
strncpy (uname, name, MIPTEXNAME);
|
strncpy (uname, name, MIPTEXNAME);
|
||||||
uname[(MIPTEXNAME - 1)] = 0;
|
uname[(MIPTEXNAME - 1)] = 0;
|
||||||
tag = va ("~%x", i++);
|
tag = va (0, "~%x", i++);
|
||||||
if (strlen (uname) + strlen (tag) <= (MIPTEXNAME - 1))
|
if (strlen (uname) + strlen (tag) <= (MIPTEXNAME - 1))
|
||||||
strcat (uname, tag);
|
strcat (uname, tag);
|
||||||
else
|
else
|
||||||
strcpy (uname + (MIPTEXNAME - 1) - strlen (tag), tag);
|
strcpy (uname + (MIPTEXNAME - 1) - strlen (tag), tag);
|
||||||
} while (wad_find_lump (wad, uname));
|
} while (wad_find_lump (wad, uname));
|
||||||
return va ("%s", uname); // just to make a safe returnable that doesn't
|
return va (0, "%s", uname); // just to make a safe returnable that doesn't
|
||||||
// need to be freed
|
// need to be freed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -301,7 +301,7 @@ TEX_InitFromWad (const char *path)
|
||||||
wad = wad_open (path);
|
wad = wad_open (path);
|
||||||
#ifdef HAVE_ZLIB
|
#ifdef HAVE_ZLIB
|
||||||
if (!wad)
|
if (!wad)
|
||||||
wad = wad_open (path = va ("%s.gz", path));
|
wad = wad_open (path = va (0, "%s.gz", path));
|
||||||
#endif
|
#endif
|
||||||
if (!wad)
|
if (!wad)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -258,7 +258,8 @@ emit_static_instances (const char *classname)
|
||||||
}
|
}
|
||||||
instances_struct[1].type = array_type (&type_pointer,
|
instances_struct[1].type = array_type (&type_pointer,
|
||||||
data.num_instances + 1);
|
data.num_instances + 1);
|
||||||
instances_def = emit_structure (va ("_OBJ_STATIC_INSTANCES_%s", classname),
|
instances_def = emit_structure (va (0, "_OBJ_STATIC_INSTANCES_%s",
|
||||||
|
classname),
|
||||||
's', instances_struct, 0, &data,
|
's', instances_struct, 0, &data,
|
||||||
0, sc_static);
|
0, sc_static);
|
||||||
free (data.instances);
|
free (data.instances);
|
||||||
|
@ -538,16 +539,16 @@ get_class_name (class_type_t *class_type, int pretty)
|
||||||
if (pretty)
|
if (pretty)
|
||||||
return class_type->c.class->name;
|
return class_type->c.class->name;
|
||||||
else
|
else
|
||||||
return va ("%s_", class_type->c.class->name);
|
return va (0, "%s_", class_type->c.class->name);
|
||||||
case ct_category:
|
case ct_category:
|
||||||
if (pretty)
|
if (pretty)
|
||||||
return va ("%s (%s)", class_type->c.category->class->name,
|
return va (0, "%s (%s)", class_type->c.category->class->name,
|
||||||
class_type->c.category->name);
|
class_type->c.category->name);
|
||||||
else
|
else
|
||||||
return va ("%s_%s", class_type->c.category->class->name,
|
return va (0, "%s_%s", class_type->c.category->class->name,
|
||||||
class_type->c.category->name);
|
class_type->c.category->name);
|
||||||
case ct_protocol:
|
case ct_protocol:
|
||||||
return va ("<%s>", class_type->c.protocol->name);
|
return va (0, "<%s>", class_type->c.protocol->name);
|
||||||
}
|
}
|
||||||
return "???";
|
return "???";
|
||||||
}
|
}
|
||||||
|
@ -561,13 +562,13 @@ class_symbol (class_type_t *class_type, int external)
|
||||||
|
|
||||||
switch (class_type->type) {
|
switch (class_type->type) {
|
||||||
case ct_category:
|
case ct_category:
|
||||||
name = va ("_OBJ_CATEGORY_%s_%s",
|
name = va (0, "_OBJ_CATEGORY_%s_%s",
|
||||||
class_type->c.category->class->name,
|
class_type->c.category->class->name,
|
||||||
class_type->c.category->name);
|
class_type->c.category->name);
|
||||||
type = &type_category;
|
type = &type_category;
|
||||||
break;
|
break;
|
||||||
case ct_class:
|
case ct_class:
|
||||||
name = va ("_OBJ_CLASS_%s", class_type->c.class->name);
|
name = va (0, "_OBJ_CLASS_%s", class_type->c.class->name);
|
||||||
type = &type_class;
|
type = &type_class;
|
||||||
break;
|
break;
|
||||||
case ct_protocol:
|
case ct_protocol:
|
||||||
|
@ -710,7 +711,8 @@ begin_category (category_t *category)
|
||||||
EMIT_STRING (space, pr_category->class_name, class->name);
|
EMIT_STRING (space, pr_category->class_name, class->name);
|
||||||
EMIT_DEF (space, pr_category->protocols,
|
EMIT_DEF (space, pr_category->protocols,
|
||||||
emit_protocol_list (category->protocols,
|
emit_protocol_list (category->protocols,
|
||||||
va ("%s_%s", class->name, category->name)));
|
va (0, "%s_%s", class->name,
|
||||||
|
category->name)));
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -786,7 +788,7 @@ emit_ivars (symtab_t *ivars, const char *name)
|
||||||
}
|
}
|
||||||
ivar_list_struct[1].type = array_type (&type_ivar, ivar_data.count);
|
ivar_list_struct[1].type = array_type (&type_ivar, ivar_data.count);
|
||||||
|
|
||||||
def = emit_structure (va ("_OBJ_INSTANCE_VARIABLES_%s", name), 's',
|
def = emit_structure (va (0, "_OBJ_INSTANCE_VARIABLES_%s", name), 's',
|
||||||
ivar_list_struct, 0, &ivar_data, 0, sc_static);
|
ivar_list_struct, 0, &ivar_data, 0, sc_static);
|
||||||
|
|
||||||
dstring_delete (ivar_data.encoding);
|
dstring_delete (ivar_data.encoding);
|
||||||
|
@ -803,7 +805,7 @@ begin_class (class_t *class)
|
||||||
def_t *def;
|
def_t *def;
|
||||||
defspace_t *space;
|
defspace_t *space;
|
||||||
|
|
||||||
sym = make_symbol (va ("_OBJ_METACLASS_%s", class->name),
|
sym = make_symbol (va (0, "_OBJ_METACLASS_%s", class->name),
|
||||||
&type_class, pr.far_data, sc_static);
|
&type_class, pr.far_data, sc_static);
|
||||||
meta_def = sym->s.def;
|
meta_def = sym->s.def;
|
||||||
meta_def->initialized = meta_def->constant = meta_def->nosave = 1;
|
meta_def->initialized = meta_def->constant = meta_def->nosave = 1;
|
||||||
|
@ -872,15 +874,15 @@ emit_class_ref (const char *class_name)
|
||||||
def_t *ref_def;
|
def_t *ref_def;
|
||||||
def_t *name_def;
|
def_t *name_def;
|
||||||
|
|
||||||
ref_sym = make_symbol (va (".obj_class_ref_%s", class_name), &type_pointer,
|
ref_sym = make_symbol (va (0, ".obj_class_ref_%s", class_name),
|
||||||
pr.far_data, sc_static);
|
&type_pointer, pr.far_data, sc_static);
|
||||||
if (!ref_sym->table)
|
if (!ref_sym->table)
|
||||||
symtab_addsymbol (pr.symtab, ref_sym);
|
symtab_addsymbol (pr.symtab, ref_sym);
|
||||||
ref_def = ref_sym->s.def;
|
ref_def = ref_sym->s.def;
|
||||||
if (ref_def->initialized)
|
if (ref_def->initialized)
|
||||||
return;
|
return;
|
||||||
ref_def->initialized = ref_def->constant = ref_def->nosave = 1;
|
ref_def->initialized = ref_def->constant = ref_def->nosave = 1;
|
||||||
name_sym = make_symbol (va (".obj_class_name_%s", class_name),
|
name_sym = make_symbol (va (0, ".obj_class_name_%s", class_name),
|
||||||
&type_pointer, pr.far_data, sc_extern);
|
&type_pointer, pr.far_data, sc_extern);
|
||||||
if (!name_sym->table)
|
if (!name_sym->table)
|
||||||
symtab_addsymbol (pr.symtab, name_sym);
|
symtab_addsymbol (pr.symtab, name_sym);
|
||||||
|
@ -896,7 +898,7 @@ emit_class_name (const char *class_name)
|
||||||
symbol_t *name_sym;
|
symbol_t *name_sym;
|
||||||
def_t *name_def;
|
def_t *name_def;
|
||||||
|
|
||||||
name_sym = make_symbol (va (".obj_class_name_%s", class_name),
|
name_sym = make_symbol (va (0, ".obj_class_name_%s", class_name),
|
||||||
&type_pointer, pr.far_data, sc_global);
|
&type_pointer, pr.far_data, sc_global);
|
||||||
if (!name_sym->table)
|
if (!name_sym->table)
|
||||||
symtab_addsymbol (pr.symtab, name_sym);
|
symtab_addsymbol (pr.symtab, name_sym);
|
||||||
|
@ -916,9 +918,9 @@ emit_category_ref (const char *class_name, const char *category_name)
|
||||||
def_t *ref_def;
|
def_t *ref_def;
|
||||||
def_t *name_def;
|
def_t *name_def;
|
||||||
|
|
||||||
ref_sym = make_symbol (va (".obj_category_ref_%s_%s",
|
ref_sym = make_symbol (va (0, ".obj_category_ref_%s_%s",
|
||||||
class_name, category_name),
|
class_name, category_name),
|
||||||
&type_pointer, pr.far_data, sc_static);
|
&type_pointer, pr.far_data, sc_static);
|
||||||
if (!ref_sym->table)
|
if (!ref_sym->table)
|
||||||
symtab_addsymbol (pr.symtab, ref_sym);
|
symtab_addsymbol (pr.symtab, ref_sym);
|
||||||
ref_def = ref_sym->s.def;
|
ref_def = ref_sym->s.def;
|
||||||
|
@ -926,9 +928,9 @@ emit_category_ref (const char *class_name, const char *category_name)
|
||||||
return;
|
return;
|
||||||
ref_def->initialized = ref_def->constant = 1;
|
ref_def->initialized = ref_def->constant = 1;
|
||||||
ref_def->nosave = 1;
|
ref_def->nosave = 1;
|
||||||
name_sym = make_symbol (va (".obj_category_name_%s_%s",
|
name_sym = make_symbol (va (0, ".obj_category_name_%s_%s",
|
||||||
class_name, category_name),
|
class_name, category_name),
|
||||||
&type_pointer, pr.far_data, sc_extern);
|
&type_pointer, pr.far_data, sc_extern);
|
||||||
if (!name_sym->table)
|
if (!name_sym->table)
|
||||||
symtab_addsymbol (pr.symtab, name_sym);
|
symtab_addsymbol (pr.symtab, name_sym);
|
||||||
name_def = name_sym->s.def;
|
name_def = name_sym->s.def;
|
||||||
|
@ -943,7 +945,7 @@ emit_category_name (const char *class_name, const char *category_name)
|
||||||
symbol_t *name_sym;
|
symbol_t *name_sym;
|
||||||
def_t *name_def;
|
def_t *name_def;
|
||||||
|
|
||||||
name_sym = make_symbol (va (".obj_category_name_%s_%s",
|
name_sym = make_symbol (va (0, ".obj_category_name_%s_%s",
|
||||||
class_name, category_name),
|
class_name, category_name),
|
||||||
&type_pointer, pr.far_data, sc_global);
|
&type_pointer, pr.far_data, sc_global);
|
||||||
if (!name_sym->table)
|
if (!name_sym->table)
|
||||||
|
@ -1374,9 +1376,8 @@ class_pointer_symbol (class_t *class)
|
||||||
|
|
||||||
class_type.c.class = class;
|
class_type.c.class = class;
|
||||||
|
|
||||||
sym = make_symbol (va ("_OBJ_CLASS_POINTER_%s", class->name),
|
sym = make_symbol (va (0, "_OBJ_CLASS_POINTER_%s", class->name),
|
||||||
&type_Class,
|
&type_Class, pr.near_data, sc_static);
|
||||||
pr.near_data, sc_static);
|
|
||||||
if (!sym->table)
|
if (!sym->table)
|
||||||
symtab_addsymbol (pr.symtab, sym);
|
symtab_addsymbol (pr.symtab, sym);
|
||||||
def = sym->s.def;
|
def = sym->s.def;
|
||||||
|
@ -1716,7 +1717,7 @@ emit_protocol (protocol_t *protocol)
|
||||||
pr_protocol_t *proto;
|
pr_protocol_t *proto;
|
||||||
defspace_t *space;
|
defspace_t *space;
|
||||||
|
|
||||||
proto_def = make_symbol (va ("_OBJ_PROTOCOL_%s", protocol->name),
|
proto_def = make_symbol (va (0, "_OBJ_PROTOCOL_%s", protocol->name),
|
||||||
&type_protocol, pr.far_data, sc_static)->s.def;
|
&type_protocol, pr.far_data, sc_static)->s.def;
|
||||||
if (proto_def->initialized)
|
if (proto_def->initialized)
|
||||||
return proto_def;
|
return proto_def;
|
||||||
|
@ -1728,7 +1729,7 @@ emit_protocol (protocol_t *protocol)
|
||||||
EMIT_STRING (space, proto->protocol_name, protocol->name);
|
EMIT_STRING (space, proto->protocol_name, protocol->name);
|
||||||
EMIT_DEF (space, proto->protocol_list,
|
EMIT_DEF (space, proto->protocol_list,
|
||||||
emit_protocol_list (protocol->protocols,
|
emit_protocol_list (protocol->protocols,
|
||||||
va ("PROTOCOL_%s", protocol->name)));
|
va (0, "PROTOCOL_%s", protocol->name)));
|
||||||
EMIT_DEF (space, proto->instance_methods,
|
EMIT_DEF (space, proto->instance_methods,
|
||||||
emit_method_descriptions (protocol->methods, protocol->name, 1));
|
emit_method_descriptions (protocol->methods, protocol->name, 1));
|
||||||
EMIT_DEF (space, proto->class_methods,
|
EMIT_DEF (space, proto->class_methods,
|
||||||
|
@ -1786,7 +1787,7 @@ emit_protocol_list (protocollist_t *protocols, const char *name)
|
||||||
if (!protocols)
|
if (!protocols)
|
||||||
return 0;
|
return 0;
|
||||||
proto_list_struct[2].type = array_type (&type_pointer, protocols->count);
|
proto_list_struct[2].type = array_type (&type_pointer, protocols->count);
|
||||||
return emit_structure (va ("_OBJ_PROTOCOLS_%s", name), 's',
|
return emit_structure (va (0, "_OBJ_PROTOCOLS_%s", name), 's',
|
||||||
proto_list_struct, 0, protocols, 0, sc_static);
|
proto_list_struct, 0, protocols, 0, sc_static);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -187,7 +187,7 @@ alias_def (def_t *def, type_t *type, int offset)
|
||||||
return alias;
|
return alias;
|
||||||
}
|
}
|
||||||
ALLOC (16384, def_t, defs, alias);
|
ALLOC (16384, def_t, defs, alias);
|
||||||
alias->name = save_string (va ("[%s:%d]", def->name, offset));
|
alias->name = save_string (va (0, "[%s:%d]", def->name, offset));
|
||||||
alias->return_addr = __builtin_return_address (0);
|
alias->return_addr = __builtin_return_address (0);
|
||||||
alias->offset = offset;
|
alias->offset = offset;
|
||||||
alias->offset_reloc = 1;
|
alias->offset_reloc = 1;
|
||||||
|
@ -222,7 +222,7 @@ temp_def (type_t *type)
|
||||||
temp->offset = defspace_alloc_aligned_loc (space, size, alignment);
|
temp->offset = defspace_alloc_aligned_loc (space, size, alignment);
|
||||||
*space->def_tail = temp;
|
*space->def_tail = temp;
|
||||||
space->def_tail = &temp->next;
|
space->def_tail = &temp->next;
|
||||||
temp->name = save_string (va (".tmp%d", current_func->temp_num++));
|
temp->name = save_string (va (0, ".tmp%d", current_func->temp_num++));
|
||||||
}
|
}
|
||||||
temp->return_addr = __builtin_return_address (0);
|
temp->return_addr = __builtin_return_address (0);
|
||||||
temp->type = type;
|
temp->type = type;
|
||||||
|
@ -424,7 +424,7 @@ init_vector_components (symbol_t *vector_sym, int is_field)
|
||||||
symbol_t *sym;
|
symbol_t *sym;
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
name = va ("%s_%s", vector_sym->name, fields[i]);
|
name = va (0, "%s_%s", vector_sym->name, fields[i]);
|
||||||
sym = symtab_lookup (current_symtab, name);
|
sym = symtab_lookup (current_symtab, name);
|
||||||
if (sym) {
|
if (sym) {
|
||||||
if (sym->table == current_symtab) {
|
if (sym->table == current_symtab) {
|
||||||
|
|
|
@ -180,13 +180,13 @@ print_bool (dstring_t *dstr, expr_t *e, int level, int id, expr_t *next)
|
||||||
for ( ; i < tl_count; i++)
|
for ( ; i < tl_count; i++)
|
||||||
dasprintf (dstr, "%*s<tr><td port=\"t%d\">t</td>%s</tr>\n",
|
dasprintf (dstr, "%*s<tr><td port=\"t%d\">t</td>%s</tr>\n",
|
||||||
indent, "", i,
|
indent, "", i,
|
||||||
i == count ? va ("<td rowspan=\"%d\"></td>",
|
i == count ? va (0, "<td rowspan=\"%d\"></td>",
|
||||||
bool->true_list->size - count)
|
bool->true_list->size - count)
|
||||||
: "");
|
: "");
|
||||||
for ( ; i < fl_count; i++)
|
for ( ; i < fl_count; i++)
|
||||||
dasprintf (dstr, "%*s<tr>%s<td port=\"f%d\">f</td></tr>\n",
|
dasprintf (dstr, "%*s<tr>%s<td port=\"f%d\">f</td></tr>\n",
|
||||||
indent, "",
|
indent, "",
|
||||||
i == count ? va ("<td rowspan=\"%d\"></td>",
|
i == count ? va (0, "<td rowspan=\"%d\"></td>",
|
||||||
bool->false_list->size - count)
|
bool->false_list->size - count)
|
||||||
: "",
|
: "",
|
||||||
i);
|
i);
|
||||||
|
@ -449,22 +449,23 @@ print_value (dstring_t *dstr, expr_t *e, int level, int id, expr_t *next)
|
||||||
|
|
||||||
switch (e->e.value->lltype) {
|
switch (e->e.value->lltype) {
|
||||||
case ev_string:
|
case ev_string:
|
||||||
label = va ("\\\"%s\\\"", quote_string (e->e.value->v.string_val));
|
label = va (0, "\\\"%s\\\"",
|
||||||
|
quote_string (e->e.value->v.string_val));
|
||||||
break;
|
break;
|
||||||
case ev_double:
|
case ev_double:
|
||||||
label = va ("f %g", e->e.value->v.double_val);
|
label = va (0, "f %g", e->e.value->v.double_val);
|
||||||
break;
|
break;
|
||||||
case ev_float:
|
case ev_float:
|
||||||
label = va ("f %g", e->e.value->v.float_val);
|
label = va (0, "f %g", e->e.value->v.float_val);
|
||||||
break;
|
break;
|
||||||
case ev_vector:
|
case ev_vector:
|
||||||
label = va ("'%g %g %g'",
|
label = va (0, "'%g %g %g'",
|
||||||
e->e.value->v.vector_val[0],
|
e->e.value->v.vector_val[0],
|
||||||
e->e.value->v.vector_val[1],
|
e->e.value->v.vector_val[1],
|
||||||
e->e.value->v.vector_val[2]);
|
e->e.value->v.vector_val[2]);
|
||||||
break;
|
break;
|
||||||
case ev_quat:
|
case ev_quat:
|
||||||
label = va ("'%g %g %g %g'",
|
label = va (0, "'%g %g %g %g'",
|
||||||
e->e.value->v.quaternion_val[0],
|
e->e.value->v.quaternion_val[0],
|
||||||
e->e.value->v.quaternion_val[1],
|
e->e.value->v.quaternion_val[1],
|
||||||
e->e.value->v.quaternion_val[2],
|
e->e.value->v.quaternion_val[2],
|
||||||
|
@ -477,32 +478,32 @@ print_value (dstring_t *dstr, expr_t *e, int level, int id, expr_t *next)
|
||||||
print_type_str (type_str, type);
|
print_type_str (type_str, type);
|
||||||
}
|
}
|
||||||
if (e->e.value->v.pointer.def)
|
if (e->e.value->v.pointer.def)
|
||||||
label = va ("(*%s)[%d]<%s>",
|
label = va (0, "(*%s)[%d]<%s>",
|
||||||
type ? type_str->str : "???",
|
type ? type_str->str : "???",
|
||||||
e->e.value->v.pointer.val,
|
e->e.value->v.pointer.val,
|
||||||
e->e.value->v.pointer.def->name);
|
e->e.value->v.pointer.def->name);
|
||||||
else
|
else
|
||||||
label = va ("(*%s)[%d]",
|
label = va (0, "(*%s)[%d]",
|
||||||
type ? type_str->str : "???",
|
type ? type_str->str : "???",
|
||||||
e->e.value->v.pointer.val);
|
e->e.value->v.pointer.val);
|
||||||
break;
|
break;
|
||||||
case ev_field:
|
case ev_field:
|
||||||
label = va ("field %d", e->e.value->v.pointer.val);
|
label = va (0, "field %d", e->e.value->v.pointer.val);
|
||||||
break;
|
break;
|
||||||
case ev_entity:
|
case ev_entity:
|
||||||
label = va ("ent %d", e->e.value->v.integer_val);
|
label = va (0, "ent %d", e->e.value->v.integer_val);
|
||||||
break;
|
break;
|
||||||
case ev_func:
|
case ev_func:
|
||||||
label = va ("func %d", e->e.value->v.integer_val);
|
label = va (0, "func %d", e->e.value->v.integer_val);
|
||||||
break;
|
break;
|
||||||
case ev_integer:
|
case ev_integer:
|
||||||
label = va ("i %d", e->e.value->v.integer_val);
|
label = va (0, "i %d", e->e.value->v.integer_val);
|
||||||
break;
|
break;
|
||||||
case ev_uinteger:
|
case ev_uinteger:
|
||||||
label = va ("u %u", e->e.value->v.uinteger_val);
|
label = va (0, "u %u", e->e.value->v.uinteger_val);
|
||||||
break;
|
break;
|
||||||
case ev_short:
|
case ev_short:
|
||||||
label = va ("s %d", e->e.value->v.short_val);
|
label = va (0, "s %d", e->e.value->v.short_val);
|
||||||
break;
|
break;
|
||||||
case ev_void:
|
case ev_void:
|
||||||
label = "<void>";
|
label = "<void>";
|
||||||
|
|
|
@ -114,7 +114,7 @@ print_flow_node_dag (dstring_t *dstr, flowgraph_t *graph, flownode_t *node,
|
||||||
int level)
|
int level)
|
||||||
{
|
{
|
||||||
if (node->dag)
|
if (node->dag)
|
||||||
print_dag (dstr, node->dag, va ("%d (%d)", node->id, node->dfn));
|
print_dag (dstr, node->dag, va (0, "%d (%d)", node->id, node->dfn));
|
||||||
else
|
else
|
||||||
print_flow_node (dstr, graph, node, level);
|
print_flow_node (dstr, graph, node, level);
|
||||||
}
|
}
|
||||||
|
|
|
@ -175,7 +175,7 @@ print_struct (dstring_t *dstr, type_t *t, int level, int id)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
val = sym->s.offset;
|
val = sym->s.offset;
|
||||||
port = va (" port=\"f%d\"", pnum++);
|
port = va (0, " port=\"f%d\"", pnum++);
|
||||||
}
|
}
|
||||||
dasprintf (dstr, "%*s<tr><td>%s</td><td%s>%d</td></tr>\n",
|
dasprintf (dstr, "%*s<tr><td>%s</td><td%s>%d</td></tr>\n",
|
||||||
indent + 4, "",
|
indent + 4, "",
|
||||||
|
|
|
@ -93,20 +93,20 @@ dump_def (progs_t *pr, pr_def_t *def, int indent)
|
||||||
if (string < 0
|
if (string < 0
|
||||||
|| (pr_uint_t) string >= pr->progs->numstrings) {
|
|| (pr_uint_t) string >= pr->progs->numstrings) {
|
||||||
str = "invalid string offset";
|
str = "invalid string offset";
|
||||||
comment = va (" %d %s", string, str);
|
comment = va (0, " %d %s", string, str);
|
||||||
} else {
|
} else {
|
||||||
str = quote_string (pr->pr_strings + G_INT (pr, offset));
|
str = quote_string (pr->pr_strings + G_INT (pr, offset));
|
||||||
comment = va (" %d \"%s\"", string, str);
|
comment = va (0, " %d \"%s\"", string, str);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ev_float:
|
case ev_float:
|
||||||
comment = va (" %g", G_FLOAT (pr, offset));
|
comment = va (0, " %g", G_FLOAT (pr, offset));
|
||||||
break;
|
break;
|
||||||
case ev_double:
|
case ev_double:
|
||||||
comment = va (" %.17g", G_DOUBLE (pr, offset));
|
comment = va (0, " %.17g", G_DOUBLE (pr, offset));
|
||||||
break;
|
break;
|
||||||
case ev_vector:
|
case ev_vector:
|
||||||
comment = va (" '%g %g %g'",
|
comment = va (0, " '%g %g %g'",
|
||||||
G_VECTOR (pr, offset)[0],
|
G_VECTOR (pr, offset)[0],
|
||||||
G_VECTOR (pr, offset)[1],
|
G_VECTOR (pr, offset)[1],
|
||||||
G_VECTOR (pr, offset)[2]);
|
G_VECTOR (pr, offset)[2]);
|
||||||
|
@ -114,7 +114,7 @@ dump_def (progs_t *pr, pr_def_t *def, int indent)
|
||||||
case ev_entity:
|
case ev_entity:
|
||||||
break;
|
break;
|
||||||
case ev_field:
|
case ev_field:
|
||||||
comment = va (" %x", G_INT (pr, offset));
|
comment = va (0, " %x", G_INT (pr, offset));
|
||||||
break;
|
break;
|
||||||
case ev_func:
|
case ev_func:
|
||||||
{
|
{
|
||||||
|
@ -123,26 +123,26 @@ dump_def (progs_t *pr, pr_def_t *def, int indent)
|
||||||
if (func < pr->progs->numfunctions) {
|
if (func < pr->progs->numfunctions) {
|
||||||
start = pr->pr_functions[func].first_statement;
|
start = pr->pr_functions[func].first_statement;
|
||||||
if (start > 0)
|
if (start > 0)
|
||||||
comment = va (" %d @ %x", func, start);
|
comment = va (0, " %d @ %x", func, start);
|
||||||
else
|
else
|
||||||
comment = va (" %d = #%d", func, -start);
|
comment = va (0, " %d = #%d", func, -start);
|
||||||
} else {
|
} else {
|
||||||
comment = va (" %d = illegal function", func);
|
comment = va (0, " %d = illegal function", func);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ev_pointer:
|
case ev_pointer:
|
||||||
comment = va (" %x", G_INT (pr, offset));
|
comment = va (0, " %x", G_INT (pr, offset));
|
||||||
break;
|
break;
|
||||||
case ev_quat:
|
case ev_quat:
|
||||||
comment = va (" '%g %g %g %g'",
|
comment = va (0, " '%g %g %g %g'",
|
||||||
G_QUAT (pr, offset)[0],
|
G_QUAT (pr, offset)[0],
|
||||||
G_QUAT (pr, offset)[1],
|
G_QUAT (pr, offset)[1],
|
||||||
G_QUAT (pr, offset)[2],
|
G_QUAT (pr, offset)[2],
|
||||||
G_QUAT (pr, offset)[3]);
|
G_QUAT (pr, offset)[3]);
|
||||||
break;
|
break;
|
||||||
case ev_integer:
|
case ev_integer:
|
||||||
comment = va (" %d", G_INT (pr, offset));
|
comment = va (0, " %d", G_INT (pr, offset));
|
||||||
break;
|
break;
|
||||||
case ev_short:
|
case ev_short:
|
||||||
break;
|
break;
|
||||||
|
@ -255,9 +255,9 @@ dump_functions (progs_t *pr)
|
||||||
|
|
||||||
start = func->first_statement;
|
start = func->first_statement;
|
||||||
if (start > 0)
|
if (start > 0)
|
||||||
comment = va (" @ %x", start);
|
comment = va (0, " @ %x", start);
|
||||||
else
|
else
|
||||||
comment = va (" = #%d", -start);
|
comment = va (0, " = #%d", -start);
|
||||||
|
|
||||||
printf ("%-5d %s%s: %d (", i, name, comment, func->numparms);
|
printf ("%-5d %s%s: %d (", i, name, comment, func->numparms);
|
||||||
if (func->numparms < 0)
|
if (func->numparms < 0)
|
||||||
|
@ -537,7 +537,7 @@ dump_qfo_types (qfo_t *qfo, int base_address)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (type->meta < 0 || type->meta >= NUM_META)
|
if (type->meta < 0 || type->meta >= NUM_META)
|
||||||
meta = va ("invalid meta: %d", type->meta);
|
meta = va (0, "invalid meta: %d", type->meta);
|
||||||
else
|
else
|
||||||
meta = ty_meta_names[type->meta];
|
meta = ty_meta_names[type->meta];
|
||||||
printf ("%-5x %-9s %-20s", type_ptr + base_address, meta,
|
printf ("%-5x %-9s %-20s", type_ptr + base_address, meta,
|
||||||
|
|
|
@ -479,7 +479,7 @@ new_label_name (void)
|
||||||
const char *fname = current_func->sym->name;
|
const char *fname = current_func->sym->name;
|
||||||
const char *lname;
|
const char *lname;
|
||||||
|
|
||||||
lname = save_string (va ("$%s_%d", fname, lnum));
|
lname = save_string (va (0, "$%s_%d", fname, lnum));
|
||||||
return lname;
|
return lname;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -543,7 +543,8 @@ named_label_expr (symbol_t *label)
|
||||||
return sym->s.expr;
|
return sym->s.expr;
|
||||||
}
|
}
|
||||||
l = new_label_expr ();
|
l = new_label_expr ();
|
||||||
l->e.label.name = save_string (va ("%s_%s", l->e.label.name, label->name));
|
l->e.label.name = save_string (va (0, "%s_%s", l->e.label.name,
|
||||||
|
label->name));
|
||||||
l->e.label.symbol = label;
|
l->e.label.symbol = label;
|
||||||
label->sy_type = sy_expr;
|
label->sy_type = sy_expr;
|
||||||
label->s.expr = l;
|
label->s.expr = l;
|
||||||
|
@ -1268,7 +1269,7 @@ new_ret_expr (type_t *type)
|
||||||
expr_t *
|
expr_t *
|
||||||
new_param_expr (type_t *type, int num)
|
new_param_expr (type_t *type, int num)
|
||||||
{
|
{
|
||||||
return param_expr (va (".param_%d", num), type);
|
return param_expr (va (0, ".param_%d", num), type);
|
||||||
}
|
}
|
||||||
|
|
||||||
expr_t *
|
expr_t *
|
||||||
|
|
|
@ -1607,7 +1607,7 @@ flow_build_graph (function_t *func)
|
||||||
flow_make_edges (graph);
|
flow_make_edges (graph);
|
||||||
flow_build_dfst (graph);
|
flow_build_dfst (graph);
|
||||||
if (options.block_dot.flow)
|
if (options.block_dot.flow)
|
||||||
dump_dot (va ("flow-%d", pass), graph, dump_dot_flow);
|
dump_dot (va (0, "flow-%d", pass), graph, dump_dot_flow);
|
||||||
pass++;
|
pass++;
|
||||||
} while (flow_remove_unreachable_nodes (graph));
|
} while (flow_remove_unreachable_nodes (graph));
|
||||||
flow_find_predecessors (graph);
|
flow_find_predecessors (graph);
|
||||||
|
|
|
@ -249,7 +249,7 @@ get_function (const char *name, const type_t *type, int overload, int create)
|
||||||
|
|
||||||
name = save_string (name);
|
name = save_string (name);
|
||||||
|
|
||||||
full_name = save_string (va ("%s|%s", name, encode_params (type)));
|
full_name = save_string (va (0, "%s|%s", name, encode_params (type)));
|
||||||
|
|
||||||
func = Hash_Find (overloaded_functions, full_name);
|
func = Hash_Find (overloaded_functions, full_name);
|
||||||
if (func) {
|
if (func) {
|
||||||
|
@ -382,7 +382,7 @@ find_function (expr_t *fexpr, expr_t *params)
|
||||||
dummy.type = find_type (&type);
|
dummy.type = find_type (&type);
|
||||||
|
|
||||||
qsort (funcs, func_count, sizeof (void *), func_compare);
|
qsort (funcs, func_count, sizeof (void *), func_compare);
|
||||||
dummy.full_name = save_string (va ("%s|%s", fexpr->e.symbol->name,
|
dummy.full_name = save_string (va (0, "%s|%s", fexpr->e.symbol->name,
|
||||||
encode_params (&type)));
|
encode_params (&type)));
|
||||||
dummy_p = bsearch (&dummy_p, funcs, func_count, sizeof (void *),
|
dummy_p = bsearch (&dummy_p, funcs, func_count, sizeof (void *),
|
||||||
func_compare);
|
func_compare);
|
||||||
|
@ -526,7 +526,7 @@ build_scope (symbol_t *fsym, symtab_t *parent)
|
||||||
|
|
||||||
if (args) {
|
if (args) {
|
||||||
while (i < MAX_PARMS) {
|
while (i < MAX_PARMS) {
|
||||||
param = new_symbol_type (va (".par%d", i), &type_param);
|
param = new_symbol_type (va (0, ".par%d", i), &type_param);
|
||||||
initialize_def (param, 0, symtab->space, sc_param);
|
initialize_def (param, 0, symtab->space, sc_param);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1106,7 +1106,7 @@ linker_add_lib (const char *libname)
|
||||||
|
|
||||||
if (strncmp (libname, "-l", 2) == 0) {
|
if (strncmp (libname, "-l", 2) == 0) {
|
||||||
while (path) {
|
while (path) {
|
||||||
path_name = va ("%s/lib%s.a", path->path, libname + 2);
|
path_name = va (0, "%s/lib%s.a", path->path, libname + 2);
|
||||||
pack = pack_open (path_name);
|
pack = pack_open (path_name);
|
||||||
if (pack)
|
if (pack)
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -609,7 +609,7 @@ emit_methods (methodlist_t *methods, const char *name, int instance)
|
||||||
methods->instance = instance;
|
methods->instance = instance;
|
||||||
|
|
||||||
methods_struct[2].type = array_type (&type_method, count);
|
methods_struct[2].type = array_type (&type_method, count);
|
||||||
return emit_structure (va ("_OBJ_%s_METHODS_%s", type, name), 's',
|
return emit_structure (va (0, "_OBJ_%s_METHODS_%s", type, name), 's',
|
||||||
methods_struct, 0, methods, 0, sc_static);
|
methods_struct, 0, methods, 0, sc_static);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -677,7 +677,7 @@ emit_method_descriptions (methodlist_t *methods, const char *name,
|
||||||
methods->instance = instance;
|
methods->instance = instance;
|
||||||
|
|
||||||
method_list_struct[1].type = array_type (&type_method_description, count);
|
method_list_struct[1].type = array_type (&type_method_description, count);
|
||||||
return emit_structure (va ("_OBJ_%s_METHODS_%s", type, name), 's',
|
return emit_structure (va (0, "_OBJ_%s_METHODS_%s", type, name), 's',
|
||||||
method_list_struct, 0, methods, 0, sc_static);
|
method_list_struct, 0, methods, 0, sc_static);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -455,7 +455,7 @@ qfo_write (qfo_t *qfo, const char *filename)
|
||||||
|
|
||||||
file = Qopen (filename, options.gzip ? "wbz9" : "wb");
|
file = Qopen (filename, options.gzip ? "wbz9" : "wb");
|
||||||
if (!file) {
|
if (!file) {
|
||||||
perror (va ("failed to open %s for writing", filename));
|
perror (va (0, "failed to open %s for writing", filename));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1168,7 +1168,7 @@ qfo_to_progs (qfo_t *qfo, int *size)
|
||||||
if (options.verbosity >= 0) {
|
if (options.verbosity >= 0) {
|
||||||
const char *big_function = "";
|
const char *big_function = "";
|
||||||
if (big_func)
|
if (big_func)
|
||||||
big_function = va (" (%s)", strings + qfo->funcs[big_func].name);
|
big_function = va (0, " (%s)", strings + qfo->funcs[big_func].name);
|
||||||
printf ("%6i strofs\n", progs->numstrings);
|
printf ("%6i strofs\n", progs->numstrings);
|
||||||
printf ("%6i statements\n", progs->numstatements);
|
printf ("%6i statements\n", progs->numstatements);
|
||||||
printf ("%6i functions\n", progs->numfunctions);
|
printf ("%6i functions\n", progs->numfunctions);
|
||||||
|
|
|
@ -341,7 +341,7 @@ DecodeArgs (int argc, char **argv)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'l': // lib file
|
case 'l': // lib file
|
||||||
add_file (va ("-l%s", NORMALIZE (optarg)));
|
add_file (va (0, "-l%s", NORMALIZE (optarg)));
|
||||||
break;
|
break;
|
||||||
case 'L':
|
case 'L':
|
||||||
linker_add_path (NORMALIZE (optarg));
|
linker_add_path (NORMALIZE (optarg));
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue