about summary refs log tree commit diff
path: root/src/engine/server
diff options
context:
space:
mode:
authorDominik Geyer <dominik.geyer@gmx.de>2008-10-01 17:16:22 +0000
committerDominik Geyer <dominik.geyer@gmx.de>2008-10-01 17:16:22 +0000
commit397b9a764b435a7b8c410bd9edc445009a7a9564 (patch)
treef7d5c80cdd8b0998c3267e064a20f8a56405d029 /src/engine/server
parentfb3e8dec7905611a170c6b069cbaac34c4e04e70 (diff)
downloadzcatch-397b9a764b435a7b8c410bd9edc445009a7a9564.tar.gz
zcatch-397b9a764b435a7b8c410bd9edc445009a7a9564.zip
data-dir autodetection; data-dir override; compiled-in data-dir; messagebox if detection fails; does chdir into data-dir
Diffstat (limited to 'src/engine/server')
-rw-r--r--src/engine/server/es_server.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/engine/server/es_server.c b/src/engine/server/es_server.c
index 6cdf835f..58866e09 100644
--- a/src/engine/server/es_server.c
+++ b/src/engine/server/es_server.c
@@ -882,7 +882,7 @@ static int server_load_map(const char *mapname)
 {
 	DATAFILE *df;
 	char buf[512];
-	str_format(buf, sizeof(buf), "data/maps/%s.map", mapname);
+	str_format(buf, sizeof(buf), "maps/%s.map", mapname);
 	df = datafile_load(buf);
 	if(!df)
 		return 0;
@@ -1145,17 +1145,6 @@ static void server_register_commands()
 
 int main(int argc, char **argv)
 {
-#if defined(CONF_PLATFORM_MACOSX)
-	char buffer[512];
-	unsigned pos = strrchr(argv[0], '/') - argv[0];
-
-	if(pos >= 512)
-		return -1;
-
-	strncpy(buffer, argv[0], 511);
-	buffer[pos] = 0;
-	chdir(buffer);
-#endif
 #if defined(CONF_FAMILY_WINDOWS)
 	int i;
 	for(i = 1; i < argc; i++)
@@ -1181,6 +1170,13 @@ int main(int argc, char **argv)
 	/* parse the command line arguments */
 	engine_parse_arguments(argc, argv);
 	
+	/* change into data-dir */
+	if (!engine_chdir_datadir(argv[0]))
+	{
+		dbg_msg("server", "fatal error: data-dir cannot be found");
+		return -1;
+	}
+	
 	/* run the server */
 	server_run();
 	return 0;