strings (skybox and *progs). skybox is easy to take care of (aditional parse
functions), but I haven't yet decided what to do with *progs. Also, progs code
needs a bit of a cleanup, but that will come later.
progs engine no longer refers to any global vars. This alows for multiple progs
being loaded (NOTE: NOT multiple mods, but (eg) for various protocol
extensions) and, once the last couple of issues are taken care of, CSQC.
strncat is not the maximum length of the destination string, but of the SOURCE
string, thus strncat (dest, src, sizeof (dest)) is incorrect. It should be
strncat (dest, src, sizeof (text) - strlen (dest)). Even then, no terminating
nul will be written if src is too long, but at least it won't crash the stack:)
changed all parms references to directly access host_parms to improve readability, and removed unused basedir references. (all remaining fields in quakeparms_t deserve to be there)
player connects immediately after a timekick sample, their time WILL be
off, so don't look at them the first sample.
sv_user.c: Another location to enforce sv_maxrate, make sv_timekick and
friends ignore a user's time if it's -1, and apply double fuzz to times
lower than we expect -- it's way too sensitive otherwise. Also, some
whitespace changes.
(for sv_minqfversion) are no longer compared as floats, so a server admin
can require client versions with a lot more granularity. (e.g. 0.2.99beta5
is greater than 0.2.99beta4, but lower than 0.3.0)
sv_minqfversion: Set to the minimum allowable QuakeForge version you want
to allow on a server. QF clients prior to current CVS _will_not_work_ with
this cvar, as the QF version was not reported previously.
sv_maxrate: Change maximum rate algorithm; if sv_maxrate is nonzero, it is
the maximum rate allowed by the server. If it is unset, the maximum is
10000 like it used to be. The rate is silently capped, so it won't kick.
Cvar fixed: sv_timekick and friends; Now kicks on too little time passed
as well.
Functionality removed: "Last message repeated X times". It causes too much
trouble.
cl_main.c: Clean up version string a little
cmd.c: Add setrom parsing to first init phase, clean up includes a little
cvar.c: setrom command now uses set's semantics. Cvar_Set, Cvar_Set_f,
Cvar_Setrom_f now do a Con_DPrintf to report attempts to set CVAR_ROM
cvars.
sv_main.c: Clean up version string a little
vid.c: -winsize, -width, and -height no longer use Cvar_SetROM. The code
looks a little uglier, but it's more correct.
for nice large amounts of client info to be sent to a QuakeForge server.
sv_main.c:
Append " QF" to the challenge reply. This DOES NOT break older clients
because atoi stops parsing at the first non-number character but
returns the value of what it successfully parsed. If a client does
choke on this, its libc is broken and not to spec.
cl_main.c:
Check for "QF" in the challenge string and if it's there, set the
QF extended info keys before connecting. Also, make sure the extended
info keys are NOT set prior to starting the connect process. This is
done is the CL_Disconnect function.
code.
Then we have the completely purge of treating 'unsigned' as a type, it
is NOT a type, it is a TYPE MODIFIER!
Under gcc for x86 it happens to try and do something sane, just treat it
as a unsigned int, but that is EVIL, it is a MODIFIER and if ANYONE adds
code which uses unsigned as a type in itself I /WILL/ harm them!!!
sv_timestamps.
To configure how timestamps are formatted, use the sv_timefmt Cvar. It's a
formatted string, with the following special tokens (taken from the
strftime() manual page):
%a The abbreviated weekday name according to the cur
rent locale.
%A The full weekday name according to the current
locale.
%b The abbreviated month name according to the current
locale.
%B The full month name according to the current
locale.
%c The preferred date and time representation for the
current locale.
%C The century number (year/100) as a 2-digit integer.
(SU)
%C The century number (the year divided by 100 and
truncated to an integer).
%d The day of the month as a decimal number (range 01
to 31).
%D Equivalent to %m/%d/%y. (Yecch - for Americans
only. Americans should note that in other coun
tries %d/%m/%y is rather common. This means that in
international context this format is ambiguous and
should not be used.) (SU)
%e Like %d, the day of the month as a decimal number,
but a leading zero is replaced by a space. (SU)
%E Modifier: use alternative format, see below. (SU)
%G The ISO 8601 year with century as a decimal number.
The 4-digit year corresponding to the ISO week num
ber (see %V). This has the same format and value
as %y, except that if the ISO week number belongs
to the previous or next year, that year is used
instead. (TZ)
%g Like %G, but without century, i.e., with a 2-digit
year (00-99). (TZ)
%h Equivalent to %b. (SU)
%H The hour as a decimal number using a 24-hour clock
(range 00 to 23).
%I The hour as a decimal number using a 12-hour clock
(range 01 to 12).
%j The day of the year as a decimal number (range 001
to 366).
%k The hour (24-hour clock) as a decimal number (range
0 to 23); single digits are preceded by a blank.
(See also %H.) (TZ)
%l The hour (12-hour clock) as a decimal number (range
1 to 12); single digits are preceded by a blank.
(See also %I.) (TZ)
%m The month as a decimal number (range 01 to 12).
%M The minute as a decimal number (range 00 to 59).
%n A newline character. (SU)
%O Modifier: use alternative format, see below. (SU)
%p Either `AM' or `PM' according to the given time
value, or the corresponding strings for the current
locale. Noon is treated as `pm' and midnight as
`am'.
%P Like %p but in lowercase: `am' or `pm' or a corre
sponding string for the current locale. (GNU)
%r The time in a.m. or p.m. notation. In the POSIX
locale this is equivalent to `%I:%M:%S %p'. (SU)
%R The time in 24-hour notation (%H:%M). (SU) For a
version including the seconds, see %T below.
%s The number of seconds since the Epoch, i.e., since
1970-01-01 00:00:00 UTC. (TZ)
%S The second as a decimal number (range 00 to 61).
%t A tab character. (SU)
%T The time in 24-hour notation (%H:%M:%S). (SU)
%u The day of the week as a decimal, range 1 to 7,
Monday being 1. See also %w. (SU)
%U The week number of the current year as a decimal
number, range 00 to 53, starting with the first
Sunday as the first day of week 01. See also %V and
%W.
%V The ISO 8601:1988 week number of the current year
as a decimal number, range 01 to 53, where week 1
is the first week that has at least 4 days in the
current year, and with Monday as the first day of
the week. See also %U and %W. (SU)
%w The day of the week as a decimal, range 0 to 6,
Sunday being 0. See also %u.
%W The week number of the current year as a decimal
number, range 00 to 53, starting with the first
Monday as the first day of week 01.
%x The preferred date representation for the current
locale without the time.
%X The preferred time representation for the current
locale without the date.
%y The year as a decimal number without a century
(range 00 to 99).
%Y The year as a decimal number including the century.
%z The time-zone as hour offset from GMT. Required to
emit RFC822-conformant dates (using "%a, %d %b %Y
%H:%M:%S %z"). (GNU)
%Z The time zone or name or abbreviation.
%+ The date and time in date(1) format. (TZ)
%% A literal `%' character.
Some of these may not work on some systems.