Enabled time stamped messages for server. To turn it on, set

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.
This commit is contained in:
Jeff Teunissen 2000-08-02 07:13:12 +00:00
parent 808e3295ab
commit acf2de7612
2 changed files with 33 additions and 8 deletions

View file

@ -93,6 +93,9 @@ extern cvar_t *sv_timekick;
extern cvar_t *sv_timekick_fuzz;
extern cvar_t *sv_timekick_interval;
cvar_t *sv_timestamps;
cvar_t *sv_timefmt;
//
// game rules mirrored in svs.info
//
@ -1390,6 +1393,9 @@ void SV_InitLocal (void)
sv_timekick_fuzz = Cvar_Get("sv_timekick_fuzz", "15", CVAR_NONE, "Time cheat \"fuzz factor\"");
sv_timekick_interval = Cvar_Get("sv_timekick_interval", "30", CVAR_NONE, "Time cheat check interval");
sv_timestamps = Cvar_Get ("sv_timestamps", "0", CVAR_NONE, "Time/date stamps in log entries");
sv_timefmt = Cvar_Get ("sv_timefmt", "[%b %e %X] ", CVAR_NONE, "Time/date format to use");
filterban = Cvar_Get("filterban", "1", CVAR_NONE, "None");
allow_download = Cvar_Get("allow_download", "1", CVAR_NONE, "None");

View file

@ -42,6 +42,7 @@
#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#define CHAN_AUTO 0
#define CHAN_WEAPON 1
@ -61,7 +62,9 @@ char outputbuf[8000];
redirect_t sv_redirected;
extern cvar_t *sv_phs;
extern cvar_t *sv_phs;
extern cvar_t *sv_timestamps;
extern cvar_t *sv_timefmt;
/*
==================
@ -129,23 +132,39 @@ void Con_Printf (char *fmt, ...)
{
va_list argptr;
char msg[MAXPRINTMSG];
char msg2[MAXPRINTMSG];
char msg3[MAXPRINTMSG];
time_t mytime = 0;
struct tm *local = NULL;
qboolean timestamps = false;
va_start (argptr, fmt);
vsnprintf (msg, sizeof(msg), fmt, argptr);
va_end (argptr);
// add to redirected message
if (sv_redirected)
{
if (strlen (msg) + strlen(outputbuf) > sizeof(outputbuf) - 1)
if (sv_timestamps && sv_timestamps->value && sv_timefmt && sv_timefmt->string)
timestamps = true;
if (timestamps) {
mytime = time (NULL);
local = localtime (&mytime);
strftime (msg3, sizeof (msg3), sv_timefmt->string, local);
snprintf (msg2, sizeof (msg2), "%s%s", msg3, msg);
} else {
snprintf (msg2, sizeof (msg2), "%s", msg);
}
if (sv_redirected) { // add to redirected message
if (strlen (msg2) + strlen(outputbuf) > sizeof(outputbuf) - 1)
SV_FlushRedirect ();
strcat (outputbuf, msg);
strcat (outputbuf, msg2);
return;
}
Sys_Printf ("%s", msg); // also echo to debugging console
Sys_Printf ("%s", msg2); // also echo to debugging console
if (sv_logfile)
fprintf (sv_logfile, "%s", msg);
fprintf (sv_logfile, "%s", msg2);
}
/*