--- deliantra/server/common/init.C 2008/04/11 21:09:52 1.43 +++ deliantra/server/common/init.C 2008/09/23 04:51:11 1.47 @@ -141,43 +141,20 @@ void init_environ (void) { - char *cp; + const char *cp; - cp = getenv ("DELIANTRA_LIBDIR"); - if (cp) - settings.datadir = cp; - - cp = getenv ("DELIANTRA_LOCALDIR"); - if (cp) - settings.localdir = cp; - - cp = getenv ("DELIANTRA_PLAYERDIR"); - if (cp) - settings.playerdir = cp; - - cp = getenv ("DELIANTRA_MAPDIR"); - if (cp) - settings.mapdir = cp; - - cp = getenv ("DELIANTRA_ARCHETYPES"); - if (cp) - settings.archetypes = cp; - - cp = getenv ("DELIANTRA_TREASURES"); - if (cp) - settings.treasures = cp; - - cp = getenv ("DELIANTRA_UNIQUEDIR"); - if (cp) - settings.uniquedir = cp; - - cp = getenv ("DELIANTRA_TEMPLATEDIR"); - if (cp) - settings.templatedir = cp; - - cp = getenv ("DELIANTRA_TMPDIR"); - if (cp) - settings.tmpdir = cp; + if (cp = getenv ("DELIANTRA_CONFDIR" )) settings.confdir = cp; + if (cp = getenv ("DELIANTRA_LIBDIR" )) settings.datadir = cp; + if (cp = getenv ("DELIANTRA_LOCALDIR" )) settings.localdir = cp; + if (cp = getenv ("DELIANTRA_PLAYERDIR" )) settings.playerdir = cp; + if (cp = getenv ("DELIANTRA_MAPDIR" )) settings.mapdir = cp; + if (cp = getenv ("DELIANTRA_ARCHETYPES" )) settings.archetypes = cp; + if (cp = getenv ("DELIANTRA_TREASURES" )) settings.treasures = cp; + if (cp = getenv ("DELIANTRA_UNIQUEDIR" )) settings.uniquedir = cp; + if (cp = getenv ("DELIANTRA_TEMPLATEDIR")) settings.templatedir = cp; + if (cp = getenv ("DELIANTRA_TMPDIR" )) settings.tmpdir = cp; + + if (cp = getenv ("DELIANTRA_LOGFILE" )) settings.logfilename = cp; } /* @@ -188,14 +165,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 +223,10 @@ { if (*buf == '#') continue; + if ((cp = strchr (buf, '\n')) != NULL) *cp = '\0'; + cp = buf; while (*cp == ' ') /* Skip blanks */ cp++; @@ -258,11 +242,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 +288,8 @@ continue; } } + LOG (llevDebug, "got %d messages in %d categories.\n", total, mess + 1); close_and_delete (fp, comp); } +