From 1c570cb3906a871920f8a628a307308820004a23 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 5 Nov 2016 18:42:14 +0100 Subject: Separate optional from required mod dependencies in main menu (#4721) * Separate optional from require dep's in main menu * Simplify modmgr mod dependency listing code --- builtin/mainmenu/modmgr.lua | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'builtin/mainmenu/modmgr.lua') diff --git a/builtin/mainmenu/modmgr.lua b/builtin/mainmenu/modmgr.lua index f996df7ba..bf87b1dfa 100644 --- a/builtin/mainmenu/modmgr.lua +++ b/builtin/mainmenu/modmgr.lua @@ -284,27 +284,32 @@ end -------------------------------------------------------------------------------- function modmgr.get_dependencies(modfolder) - local toadd = "" + local toadd_hard = "" + local toadd_soft = "" if modfolder ~= nil then local filename = modfolder .. DIR_DELIM .. "depends.txt" + local hard_dependencies = {} + local soft_dependencies = {} local dependencyfile = io.open(filename,"r") - if dependencyfile then local dependency = dependencyfile:read("*l") while dependency do - if toadd ~= "" then - toadd = toadd .. "," + if string.sub(dependency, -1, -1) == "?" then + table.insert(soft_dependencies, string.sub(dependency, 1, -2)) + else + table.insert(hard_dependencies, dependency) end - toadd = toadd .. dependency dependency = dependencyfile:read() end dependencyfile:close() end + toadd_hard = table.concat(hard_dependencies, ",") + toadd_soft = table.concat(soft_dependencies, ",") end - return toadd + return toadd_hard, toadd_soft end -------------------------------------------------------------------------------- -- cgit v1.2.3 From d9675d3d922a2c8f521102c9386d14c694fda365 Mon Sep 17 00:00:00 2001 From: Bernardo Sulzbach Date: Mon, 12 Dec 2016 00:39:09 -0200 Subject: Mod dependency lists: Should have platform-independent line breaking This fixes a bug existing in modmgr.lua as reported by @Wuzzy2 which caused the mod dependency list to glitch if input was using a line terminator different than the OS default. The C++ code does not need any changes as it already trims CR occurrences on platforms on which the line termination sequence is LF. Taken into account the size of the depends.txt files used, this should not introduce a noticeable performance regression. Fixes #4720 --- builtin/mainmenu/modmgr.lua | 1 + 1 file changed, 1 insertion(+) (limited to 'builtin/mainmenu/modmgr.lua') diff --git a/builtin/mainmenu/modmgr.lua b/builtin/mainmenu/modmgr.lua index bf87b1dfa..2b7b371bf 100644 --- a/builtin/mainmenu/modmgr.lua +++ b/builtin/mainmenu/modmgr.lua @@ -296,6 +296,7 @@ function modmgr.get_dependencies(modfolder) if dependencyfile then local dependency = dependencyfile:read("*l") while dependency do + dependency = dependency:gsub("\r", "") if string.sub(dependency, -1, -1) == "?" then table.insert(soft_dependencies, string.sub(dependency, 1, -2)) else -- cgit v1.2.3