shithub: heretic

Download patch

ref: 078dd1d6d088aab71c37c0e21fea5cebfe1271a8
parent: 7338feb3744ed2f0a63bababbbdf3d55de143bb6
author: Jacob Moody <moody@posixcafe.org>
date: Sat Feb 4 20:52:12 EST 2023

another iteration on basepath/waddir stuff

--- a/i_system.c
+++ b/i_system.c
@@ -135,22 +135,33 @@
 void I_SetupPath(char **wads)
 {
 	char **s;
-	char *home;
+	char *tmp;
 	char *cfg, *data;
 	char buf[512];
 
-	strcpy(buf, *wads);
-	snprint(wd, sizeof wd, "/sys/games/lib/%s/", strip(buf));
-
-	for(s = wads; *s; s++)
+	data = cfg = nil;
+	for(s = wads; *s; s++){
+		if(!strstr(*s, ".wad"))
+			continue;
+		if(data == nil)
+			data = *s;
 		cfg = *s;
+	}
 
+	strcpy(buf, data);
+	snprint(wd, sizeof wd, "/sys/games/lib/%s/", strip(buf));
+
 	strcpy(buf, cfg);
-	home = getenv("home");
-	snprint(bpd, sizeof bpd, "%s/lib/%s/", home, strip(buf));
-	free(home);
+	tmp = getenv("home");
+	snprint(bpd, sizeof bpd, "%s/lib/%s/", tmp, strip(buf));
+	free(tmp);
 
+	// would suck if someone only found out after 2 hours
+	// we could default back to cwd, but since this is our
+	// write location, I'd rather not take chances.
+	if(access(bpd, AEXIST) != 0)
+		sysfatal("user directory %s not available %r", bpd);
+
 	basePath = bpd;
 	waddir = wd;
-	print("TEST %s %s\n", basePath, waddir);
 }