extern void close_files(void);
extern void panic(int sig);
extern void shutdwn(int sig);
-extern void start_server(int, char *);
+extern void init_server(int);
+extern void start_server(int);
#if defined(_WIN32)
extern void loc_NTTerm(void);
#endif
sprintf(tbuf, "%s/econfig", datadir);
config_file = tbuf;
}
+ emp_config(config_file);
service_status.dwServiceType = SERVICE_WIN32;
service_status.dwCurrentState = SERVICE_START_PENDING;
}
/* Initialization code goes here. */
- start_server(0, config_file);
+ init_server(0);
+ start_server(0);
/* Initialization complete - report running status. */
service_status.dwCurrentState = SERVICE_RUNNING;
}
}
- loginit("server");
-
#if defined(_WIN32)
if ((debug || datadir_set || config_file != NULL) &&
remove_service_set) {
printf("Can't use both -r or -R and -i or -I options\n");
exit(EXIT_FAILURE);
}
+#endif /* _WIN32 */
+
+ if (config_file == NULL) {
+ sprintf(tbuf, "%s/econfig", datadir);
+ config_file = tbuf;
+ }
+ emp_config(config_file);
+
+#if defined(_WIN32)
if (install_service_set)
return install_service(argv[0], service_name, datadir_set);
if (remove_service_set)
config_file = tbuf;
}
- logerror("------------------------------------------------------");
- logerror("Empire server (pid %d) started", (int)getpid());
-
#if defined(_WIN32)
if (debug == 0) {
SERVICE_TABLE_ENTRY DispatchTable[]={{"Empire Server", service_main},{NULL, NULL}};
} else /* start in the foreground */
debug = 1;
}
-#else
- if (debug == 0 && flags == 0) {
+#endif /* _WIN32 */
+
+ init_server(flags);
+#ifndef _WIN32
+ if (debug == 0 && flags == 0)
disassoc();
- }
#endif
-
- start_server(flags, config_file);
+ start_server(flags);
#if defined(__linux__) && defined(_EMPTH_POSIX)
strcpy(tbuf, argv[0]);
void
-start_server(int flags, char *config_file)
+init_server(int flags)
{
#ifdef POSIXSIGNALS
struct sigaction act;
#if defined(_WIN32)
loc_NTInit();
#endif
- emp_config(config_file);
update_policy_check();
nullify_objects();
mobility_init();
}
+ loginit("server");
+ logerror("------------------------------------------------------");
+ logerror("Empire server (pid %d) started", (int)getpid());
+}
+
+void
+start_server(int flags)
+{
empth_create(PP_ACCEPT, player_accept, (50 * 1024), flags,
"AcceptPlayers", "Accept network connections", 0);
empth_create(PP_KILLIDLE, player_kill_idle, (50 * 1024), flags,