mirror of
https://git.code.sf.net/p/quake/newtree
synced 2025-03-08 17:31:07 +00:00
fixed a bug in Cvar_Info()
This commit is contained in:
parent
55fbc12c3d
commit
efc900e371
1 changed files with 48 additions and 21 deletions
|
@ -29,29 +29,56 @@
|
||||||
#include "qwsvdef.h"
|
#include "qwsvdef.h"
|
||||||
|
|
||||||
void SV_SendServerInfoChange(char *key, char *value);
|
void SV_SendServerInfoChange(char *key, char *value);
|
||||||
/* extern cvar_t sv_highchars;
|
|
||||||
CVAR_FIXME */
|
|
||||||
extern cvar_t *sv_highchars;
|
|
||||||
|
|
||||||
void
|
/* extern cvar_t sv_highchars;
|
||||||
Cvar_Info(cvar_t *var)
|
CVAR_FIXME */
|
||||||
|
extern cvar_t *sv_highchars;
|
||||||
|
|
||||||
|
/*
|
||||||
|
=================
|
||||||
|
Cvar_Info
|
||||||
|
|
||||||
|
Sets a given cvar (key,value) into svs.info (serverinfo)
|
||||||
|
high char filtering is performed according to sv_highchars.value
|
||||||
|
=================
|
||||||
|
*/
|
||||||
|
|
||||||
|
void Cvar_Info (cvar_t *var)
|
||||||
{
|
{
|
||||||
if (var->flags & CVAR_SERVERINFO)
|
if (var->flags & CVAR_SERVERINFO)
|
||||||
{
|
{
|
||||||
unsigned char info[1024],*p, *c;
|
unsigned char info[1024], *p, *c;
|
||||||
|
|
||||||
for (p=info, c=var->string; *c && (p-info<sizeof(info)-1); c++, p++) {
|
/*
|
||||||
if (!sv_highchars->value) {
|
for (p=info, c=var->string; *c && (p-info<sizeof(info)-1); c++, p++) {
|
||||||
*c &= 127;
|
if (! sv_highchars.value) {
|
||||||
if (*c < 32 || *c > 127)
|
*c &= 127;
|
||||||
continue;
|
if (*c < 32 || *c > 127)
|
||||||
*p = *c;
|
continue;
|
||||||
}
|
*p = *c;
|
||||||
}
|
}
|
||||||
*p=0;
|
}
|
||||||
|
*p=0;
|
||||||
|
Info_SetValueForKey (svs.info, var->name, info, MAX_SERVERINFO_STRING);
|
||||||
|
*/
|
||||||
|
|
||||||
Info_SetValueForKey (svs.info, var->name, info, MAX_SERVERINFO_STRING);
|
// bug above: info[] is not set if sv_highchar == 1
|
||||||
SV_SendServerInfoChange(var->name, var->string);
|
// plus, high chars are skipped and replaced with whatever is on the stack in info[]
|
||||||
// SV_BroadcastCommand ("fullserverinfo \"%s\"\n", svs.info);
|
// because p is still incremented
|
||||||
}
|
|
||||||
|
if (! sv_highchars->value) {
|
||||||
|
for (p=info, c=var->string; *c && (p-info<sizeof(info)-1); ) {
|
||||||
|
*c &= 0x7f;
|
||||||
|
if (*c >= 32) *p++ = *c;
|
||||||
|
c++;
|
||||||
|
}
|
||||||
|
*p=0;
|
||||||
|
Info_SetValueForKey (svs.info, var->name, info, MAX_SERVERINFO_STRING);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Info_SetValueForKey (svs.info, var->name, var->string, MAX_SERVERINFO_STRING);
|
||||||
|
|
||||||
|
SV_SendServerInfoChange (var->name, var->string);
|
||||||
|
// SV_BroadcastCommand ("fullserverinfo \"%s\"\n", svs.info);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue