ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/init.C
(Generate patch)

Comparing deliantra/server/server/init.C (file contents):
Revision 1.28 by pippijn, Wed Jan 3 00:46:53 2007 UTC vs.
Revision 1.35 by root, Thu Jan 18 19:32:37 2007 UTC

1/* 1/*
2 CrossFire, A Multiplayer game for X-windows 2 * CrossFire, A Multiplayer game for X-windows
3 3 *
4 * Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team
4 Copyright (C) 2002 Mark Wedel & Crossfire Development Team 5 * Copyright (C) 2002 Mark Wedel & Crossfire Development Team
5 Copyright (C) 1992 Frank Tore Johansen 6 * Copyright (C) 1992 Frank Tore Johansen
6 7 *
7 This program is free software; you can redistribute it and/or modify 8 * This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 9 * it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or 10 * the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version. 11 * (at your option) any later version.
11 12 *
12 This program is distributed in the hope that it will be useful, 13 * This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details. 16 * GNU General Public License for more details.
16 17 *
17 You should have received a copy of the GNU General Public License 18 * You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 19 * along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 21 *
21 The authors can be reached via e-mail at <crossfire@schmorp.de> 22 * The authors can be reached via e-mail at <crossfire@schmorp.de>
22*/ 23 */
23 24
24#include <global.h> 25#include <global.h>
25#include <material.h> 26#include <material.h>
26#include <loader.h> 27#include <loader.h>
27#include <sproto.h> 28#include <sproto.h>
755 else 756 else
756 { 757 {
757 LOG (llevError, "load_settings: Unknown value for " "real_wiz: %s\n", cp); 758 LOG (llevError, "load_settings: Unknown value for " "real_wiz: %s\n", cp);
758 } 759 }
759 } 760 }
760 else if (!strcasecmp (buf, "explore_mode"))
761 {
762 if (!strcasecmp (cp, "on") || !strcasecmp (cp, "true"))
763 {
764 settings.explore_mode = TRUE;
765 }
766 else if (!strcasecmp (cp, "off") || !strcasecmp (cp, "false"))
767 {
768 settings.explore_mode = FALSE;
769 }
770 else
771 {
772 LOG (llevError, "load_settings: Unknown value for " "explore_mode: %s\n", cp);
773 }
774 }
775 else if (!strcasecmp (buf, "spellpoint_level_depend")) 761 else if (!strcasecmp (buf, "spellpoint_level_depend"))
776 { 762 {
777 if (!strcasecmp (cp, "on") || !strcasecmp (cp, "true")) 763 if (!strcasecmp (cp, "on") || !strcasecmp (cp, "true"))
778 { 764 {
779 settings.spellpoint_level_depend = TRUE; 765 settings.spellpoint_level_depend = TRUE;
1022 if (strcmp (settings.dm_mail, "") != 0) 1008 if (strcmp (settings.dm_mail, "") != 0)
1023 { 1009 {
1024 fprintf (logfile, "Maintained locally by: %s\n", settings.dm_mail); 1010 fprintf (logfile, "Maintained locally by: %s\n", settings.dm_mail);
1025 fprintf (logfile, "Questions and bugs should be mailed to above address.\n"); 1011 fprintf (logfile, "Questions and bugs should be mailed to above address.\n");
1026 } 1012 }
1027
1028 SRANDOM (time (NULL));
1029 1013
1030 init_startup (); /* Write (C), check shutdown/forbid files */ 1014 init_startup (); /* Write (C), check shutdown/forbid files */
1031 init_uuid (); 1015 init_uuid ();
1032 init_signals (); /* Sets up signal interceptions */ 1016 init_signals (); /* Sets up signal interceptions */
1033 init_commands (); /* Sort command tables */ 1017 init_commands (); /* Sort command tables */
1228} 1212}
1229 1213
1230/* Signal handlers: */ 1214/* Signal handlers: */
1231 1215
1232void 1216void
1217rec_sigabrt (int i)
1218{
1219 signal (SIGABRT, SIG_DFL);
1220
1221 LOG (llevError, "SIGABRT received.\n");
1222 cleanup ("SIGABRT received", 1);
1223}
1224
1225void
1233rec_sigsegv (int i) 1226rec_sigsegv (int i)
1234{ 1227{
1228 signal (SIGSEGV, SIG_DFL);
1229
1235 LOG (llevError, "SIGSEGV received.\n"); 1230 LOG (llevError, "SIGSEGV received.\n");
1236 fatal_signal (1, 1); 1231 cleanup ("SIGSEGV received", 1);
1237}
1238
1239void
1240rec_sigint (int i)
1241{
1242 LOG (llevInfo, "SIGINT received.\n");
1243 fatal_signal (0, 1);
1244}
1245
1246void
1247rec_sighup (int i)
1248{
1249 LOG (llevInfo, "SIGHUP received\n");
1250
1251 if (init_done)
1252 cleanup (0);
1253
1254 exit (0);
1255} 1232}
1256 1233
1257void 1234void
1258rec_sigquit (int i) 1235rec_sigquit (int i)
1259{ 1236{
1237 signal (SIGQUIT, SIG_IGN);
1238
1260 LOG (llevInfo, "SIGQUIT received\n"); 1239 LOG (llevInfo, "SIGQUIT received\n");
1261 fatal_signal (1, 1); 1240 cleanup ("SIGQUIT received", 1);
1262} 1241}
1263 1242
1264void 1243void
1265rec_sigbus (int i) 1244rec_sigbus (int i)
1266{ 1245{
1267#ifdef SIGBUS 1246 signal (SIGBUS, SIG_DFL);
1247
1268 LOG (llevError, "SIGBUS received\n"); 1248 LOG (llevError, "SIGBUS received\n");
1269 fatal_signal (1, 1); 1249 cleanup ("SIGBUS received", 1);
1270#endif
1271}
1272
1273void
1274rec_sigterm (int i)
1275{
1276 LOG (llevInfo, "SIGTERM received\n");
1277 fatal_signal (0, 1);
1278}
1279
1280void
1281fatal_signal (int make_core, int close_sockets)
1282{
1283 cleanup (make_core);
1284} 1250}
1285 1251
1286void 1252void
1287init_signals (void) 1253init_signals (void)
1288{ 1254{
1289 signal (SIGHUP, rec_sighup); 1255 signal (SIGPIPE, SIG_IGN);
1290 signal (SIGINT, rec_sigint); 1256 signal (SIGABRT, rec_sigabrt);
1291 signal (SIGQUIT, rec_sigquit); 1257 signal (SIGQUIT, rec_sigquit);
1292 signal (SIGSEGV, rec_sigsegv); 1258 signal (SIGSEGV, rec_sigsegv);
1293 signal (SIGPIPE, SIG_IGN);
1294#ifdef SIGBUS
1295 signal (SIGBUS, rec_sigbus); 1259 signal (SIGBUS, rec_sigbus);
1296#endif
1297 signal (SIGTERM, rec_sigterm);
1298} 1260}
1299 1261
1300/* init_races() - reads the races file in the lib/ directory, then 1262/* init_races() - reads the races file in the lib/ directory, then
1301 * overwrites old 'race' entries. This routine allow us to quickly 1263 * overwrites old 'race' entries. This routine allow us to quickly
1302 * re-configure the 'alignment' of monsters, objects. Useful for 1264 * re-configure the 'alignment' of monsters, objects. Useful for
1303 * putting together lists of creatures, etc that belong to gods. 1265 * putting together lists of creatures, etc that belong to gods.
1304 */ 1266 */
1305
1306void 1267void
1307init_races (void) 1268init_races (void)
1308{ 1269{
1309 FILE *file; 1270 FILE *file;
1310 char race[MAX_BUF], fname[MAX_BUF], buf[MAX_BUF], *cp, variable[MAX_BUF]; 1271 char race[MAX_BUF], fname[MAX_BUF], buf[MAX_BUF], *cp, variable[MAX_BUF];

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines