--- deliantra/server/common/logger.C 2007/05/28 21:21:40 1.13
+++ deliantra/server/common/logger.C 2007/11/08 19:43:23 1.16
@@ -1,25 +1,24 @@
/*
- * This file is part of Crossfire TRT, the Multiplayer Online Role Playing Game.
+ * This file is part of Deliantra, the Roguelike Realtime MMORPG.
*
- * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team
+ * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
* Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team
* Copyright (©) 1992,2007 Frank Tore Johansen
*
- * Crossfire TRT is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
+ * Deliantra is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
*
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * for more details.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License along
- * with Crossfire TRT; if not, write to the Free Software Foundation, Inc. 51
- * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
*
- * The authors can be reached via e-mail to
+ * The authors can be reached via e-mail to
*/
#include
@@ -34,29 +33,29 @@
if (level > settings.debug)
return;
- char msec[20];
- char buf[20460];
- char tbuf[20480];
+ char buf[20480];
struct timeval tv;
gettimeofday (&tv, 0);
struct tm *ptime = localtime (&tv.tv_sec);
- strftime (tbuf, sizeof (tbuf), "%Y-%m-%d %H:%M:%S", ptime);
- sprintf (msec, ".%03d ", (int)(tv.tv_usec / 1000));
+ int len = strftime (buf, sizeof (buf) - 7, "%Y-%m-%d %H:%M:%S", ptime);
+ len += sprintf (buf + len, ".%04d ", (int)(tv.tv_usec / 100));
va_list ap;
va_start (ap, format);
- vsnprintf (buf, sizeof (buf), format, ap);
+ len += vsnprintf (buf + len, sizeof (buf) - len, format, ap);
va_end (ap);
- strncat (tbuf, msec, sizeof (tbuf));
- strncat (tbuf, buf, sizeof (tbuf));
+ len = min (sizeof (buf) - 1, len);
- fputs (tbuf, logfile);
+ if (buf [len - 1] != '\n')
+ buf [len++] = '\n'; // not 0-terminated
+
+ write (STDERR_FILENO, buf, len);
if (logfile != stderr)
- fputs (tbuf, stderr);
+ fwrite (buf, 1, len, logfile);
if (flags & logBacktrace)
- log_backtrace (tbuf);
+ log_backtrace (buf);
}