of leaf names in a stem variable via %var, the builtin functions 'count'
and 'contains', and an initial interface between qw-server and GIB to allow
querying of clients and their info strings. Also cleaned up the chat event
interface a bit. Renamed a few builtins.
time to what the server thinks is correct when too much inaccuracy
builds up. This nearly eliminates all speed cheating, both normal and
reverse, except for a brief burst before the protection kicks in. Might
need cleaning up/tweaking.
code cleanups and general performance work to be developed in relative peace.
While cleaning up the networking code /is/ important, fixing QF's perfomance
issues is of much higher priority.
This required changes to the api (info_t instead of char *) but should be
a net gain in speed (not a lot, admittedly: it was pretty fast to begin
with, but this paves the way for some other changes I have in mind).
segfault if your first call was with "". Probably could cause
crashes too
- add a string.c file to libQFutil, with a Q_strcasestr function,
which strcasestr is defined to if it's not already defined. (we'd
get that with glibc if we defined __USE_GNU, but we don't)
- make client_t and SV_ExtractFromUserinfo both use NAME_MAX for
their name arrays, instead of 32 for one and 80 for the other
- rewrite almost all of SV_ExtractFromUserinfo's name handling.
- \r, \n, and \t are all converted to spaces
- leading/trailing spaces are stripped
- consecutive spaces are reduced to a single space
- empty names are considered bad
- user-* nicks are considered bad (unless forced to them)
- a name containing console or admin is considered bad
- a name that already exists is considered bad
- if they have a bad name it gets forced to user-%d, where %d is
their userid
- netname in the progs is now updated properly
- name changes are always reported unless it's the initial setting,
rather than only if they're full connected and not a spectator
- finally, if the name change fails (info string exceeded), give
them the boot. (before this was only done for duplicate names)
That's about it :)
(Sys_DPrintf is new) is now used exclusively for all lib printing. Con_Init
sets the sys printf recirection to Con_Print (which has been revamped
appropriatly) and the server sets it to SV_Print (which was SV_Printf and
the new SV_Printf calls /it/). This should fix the rcon print redirection
issues.
server.h:
add rcon_from_user
sv_ccmds.c:
add SV_ConSay_Info_f (sayinfo) for quiet info messages and revamp the
rest of SV_ConSay_f accordingly. Also include deactivated commands for
cuff, mute, tell and ban (coming soon).
sv_main.c:
revamp the rcon system to support both `root' rcon and admin rcon and
provide better logging. admin_password is the cvar holding the password
for admin access (used the same way as rcon_password)
quakeio.h -> vfile.h
More diff reduction between trunk and my VFS code. Also took the time to
put some headers in order and fix a few #include's pointed out by moving
things around a bit.