util/startup.lua
changeset 10395 986349fc0f9e
parent 10214 9fdda9fafc3c
parent 10394 82705ec87253
child 10408 29c10930a7b2
--- a/util/startup.lua	Sun Nov 03 17:44:14 2019 +0100
+++ b/util/startup.lua	Mon Nov 04 00:36:49 2019 +0100
@@ -34,7 +34,8 @@
 		if file then
 			file:close();
 			prosody.config_file = filename;
-			CFG_CONFIGDIR = filename:match("^(.*)[\\/][^\\/]*$"); -- luacheck: ignore 111
+			prosody.paths.config = filename:match("^(.*)[\\/][^\\/]*$");
+			CFG_CONFIGDIR = prosody.paths.config; -- luacheck: ignore 111
 			break;
 		end
 	end
@@ -244,8 +245,14 @@
 
 function startup.chdir()
 	if prosody.installed then
+		local lfs = require "lfs";
+		-- Ensure paths are absolute, not relative to the working directory which we're about to change
+		local cwd = lfs.currentdir();
+		prosody.paths.source = config.resolve_relative_path(cwd, prosody.paths.source);
+		prosody.paths.config = config.resolve_relative_path(cwd, prosody.paths.config);
+		prosody.paths.data = config.resolve_relative_path(cwd, prosody.paths.data);
 		-- Change working directory to data path.
-		require "lfs".chdir(prosody.paths.data);
+		lfs.chdir(prosody.paths.data);
 	end
 end