From: Jürgen Doser Date: Wed, 20 Feb 2013 19:06:39 +0000 (+0100) Subject: Print missing mod dependencies on server start X-Git-Url: http://81.2.79.47:8989/gitweb/?a=commitdiff_plain;h=89b88917a89923b37b629557fdeb54fa0b442bb9;p=zefram%2Fminetest%2Fminetest_engine.git Print missing mod dependencies on server start i.e., not only the mod with missing dependencies, but also the missing dependencies itself. (This already used to be the case before the mod selection gui was added) Also, mods with unsatisfied dependencies are no longer reported as mods that could not be found. --- diff --git a/src/server.cpp b/src/server.cpp index 572ef4d8..ec8f8a5e 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -998,17 +998,20 @@ Server::Server( ModConfiguration modconf(m_path_world); m_mods = modconf.getMods(); + std::list unsatisfied_mods = modconf.getUnsatisfiedMods(); // complain about mods with unsatisfied dependencies if(!modconf.isConsistent()) { - errorstream << "The following mods have unsatisfied dependencies: "; - std::list modlist = modconf.getUnsatisfiedMods(); - for(std::list::iterator it = modlist.begin(); - it != modlist.end(); ++it) + for(std::list::iterator it = unsatisfied_mods.begin(); + it != unsatisfied_mods.end(); ++it) { - errorstream << (*it).name << " "; + ModSpec mod = *it; + errorstream << "mod \"" << mod.name << "\" has unsatisfied dependencies: "; + for(std::set::iterator dep_it = mod.unsatisfied_depends.begin(); + dep_it != mod.unsatisfied_depends.end(); ++dep_it) + errorstream << " \"" << *dep_it << "\""; + errorstream << std::endl; } - errorstream << std::endl; } Settings worldmt_settings; @@ -1033,12 +1036,15 @@ Server::Server( for(std::vector::iterator it = m_mods.begin(); it != m_mods.end(); ++it) load_mod_names.erase((*it).name); + for(std::list::iterator it = unsatisfied_mods.begin(); + it != unsatisfied_mods.end(); ++it) + load_mod_names.erase((*it).name); if(!load_mod_names.empty()) { - errorstream << "The following mods could not be found: "; + errorstream << "The following mods could not be found:"; for(std::set::iterator it = load_mod_names.begin(); it != load_mod_names.end(); ++it) - errorstream << (*it) << " "; + errorstream << " \"" << (*it) << "\""; errorstream << std::endl; }