--- deliantra/server/common/init.C 2007/08/20 22:09:04 1.40 +++ deliantra/server/common/init.C 2008/05/06 17:05:17 1.45 @@ -1,11 +1,11 @@ /* - * This file is part of Crossfire TRT, the Roguelike Realtime MORPG. + * 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,2008 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 + * 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. @@ -18,7 +18,7 @@ * 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 */ #define EXTERN // horrible hack @@ -143,39 +143,39 @@ { char *cp; - cp = getenv ("CROSSFIRE_LIBDIR"); + cp = getenv ("DELIANTRA_LIBDIR"); if (cp) settings.datadir = cp; - cp = getenv ("CROSSFIRE_LOCALDIR"); + cp = getenv ("DELIANTRA_LOCALDIR"); if (cp) settings.localdir = cp; - cp = getenv ("CROSSFIRE_PLAYERDIR"); + cp = getenv ("DELIANTRA_PLAYERDIR"); if (cp) settings.playerdir = cp; - cp = getenv ("CROSSFIRE_MAPDIR"); + cp = getenv ("DELIANTRA_MAPDIR"); if (cp) settings.mapdir = cp; - cp = getenv ("CROSSFIRE_ARCHETYPES"); + cp = getenv ("DELIANTRA_ARCHETYPES"); if (cp) settings.archetypes = cp; - cp = getenv ("CROSSFIRE_TREASURES"); + cp = getenv ("DELIANTRA_TREASURES"); if (cp) settings.treasures = cp; - cp = getenv ("CROSSFIRE_UNIQUEDIR"); + cp = getenv ("DELIANTRA_UNIQUEDIR"); if (cp) settings.uniquedir = cp; - cp = getenv ("CROSSFIRE_TEMPLATEDIR"); + cp = getenv ("DELIANTRA_TEMPLATEDIR"); if (cp) settings.templatedir = cp; - cp = getenv ("CROSSFIRE_TMPDIR"); + cp = getenv ("DELIANTRA_TMPDIR"); if (cp) settings.tmpdir = cp; } @@ -188,14 +188,19 @@ init_globals (void) { if (settings.logfilename[0] == 0) - logfile = stderr; - else if ((logfile = fopen (settings.logfilename, "a")) == NULL) + set_logfd (-1); + else { - fprintf (stderr, "Unable to open %s as the logfile - will use stderr instead\n", settings.logfilename); - logfile = stderr; + int logfd = open (settings.logfilename, O_CREAT|O_WRONLY|O_APPEND, 0666); + + if (logfd >= 0) + set_logfd (logfd); + else + { + set_logfd (-1); + LOG (llevError, "Unable to open %s as the logfile - will use stderr instead", settings.logfilename); + } } - else - setvbuf (logfile, NULL, _IOLBF, 0); } void @@ -241,8 +246,10 @@ { if (*buf == '#') continue; + if ((cp = strchr (buf, '\n')) != NULL) *cp = '\0'; + cp = buf; while (*cp == ' ') /* Skip blanks */ cp++; @@ -258,11 +265,13 @@ attack_mess[mess][level].buf2 = NULL; attack_mess[mess][level].buf3 = NULL; } + level = 0; mess = atoi (p); mode = 1; continue; } + if (mode == 1) { p = strtok (buf, "="); @@ -302,6 +311,8 @@ continue; } } + LOG (llevDebug, "got %d messages in %d categories.\n", total, mess + 1); close_and_delete (fp, comp); } +