mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-25 15:45:38 +00:00
Improved some logging as well as handling of a missing es_systems.cfg file.
This commit is contained in:
parent
c9cc8494c9
commit
0b6d0bfcd6
|
@ -163,7 +163,7 @@ void CollectionSystemManager::saveCustomCollection(SystemData* sys)
|
|||
}
|
||||
}
|
||||
else {
|
||||
LOG(LogError) << "Couldn't find collection to save! " << name;
|
||||
LOG(LogError) << "Couldn't find collection to save: " << name;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -888,10 +888,10 @@ void CollectionSystemManager::populateCustomCollection(CollectionSystemData* sys
|
|||
std::string path = getCustomCollectionConfigPath(newSys->getName());
|
||||
|
||||
if (!Utils::FileSystem::exists(path)) {
|
||||
LOG(LogInfo) << "Couldn't find custom collection config file at " << path;
|
||||
LOG(LogInfo) << "Couldn't find custom collection config file \"" << path << "\"";
|
||||
return;
|
||||
}
|
||||
LOG(LogInfo) << "Loading custom collection config file at " << path;
|
||||
LOG(LogInfo) << "Parsing custom collection file \"" << path << "\"...";
|
||||
|
||||
FileData* rootFolder = newSys->getRootFolder();
|
||||
FileFilterIndex* index = newSys->getIndex();
|
||||
|
@ -928,8 +928,7 @@ void CollectionSystemManager::populateCustomCollection(CollectionSystemData* sys
|
|||
index->addToIndex(newGame);
|
||||
}
|
||||
else {
|
||||
LOG(LogInfo) << "Couldn't find game referenced at '" << gameKey <<
|
||||
"' for system config '" << path << "'";
|
||||
LOG(LogWarning) << "File \"" << gameKey << "\" does not exist, ignoring entry";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ FileData* findOrCreateFile(SystemData* system, const std::string& path, FileType
|
|||
std::string relative = Utils::FileSystem::removeCommonPath(path, root->getPath(), contains);
|
||||
|
||||
if (!contains) {
|
||||
LOG(LogError) << "File path \"" << path << "\" is outside system path \"" <<
|
||||
LOG(LogError) << "Path \"" << path << "\" is outside system path \"" <<
|
||||
system->getStartPath() << "\"";
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ FileData* findOrCreateFile(SystemData* system, const std::string& path, FileType
|
|||
return treeNode;
|
||||
|
||||
if (type == FOLDER) {
|
||||
LOG(LogWarning) << "Gamelist: folder doesn't exist, won't create";
|
||||
LOG(LogWarning) << "Gamelist: folder doesn't exist, won't create it";
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,7 @@ FileData* findOrCreateFile(SystemData* system, const std::string& path, FileType
|
|||
// Don't create folders unless they're including any games.
|
||||
// If the type is FOLDER it's going to be empty, so don't bother.
|
||||
if (type == FOLDER) {
|
||||
LOG(LogWarning) << "Gamelist: folder doesn't exist, won't create";
|
||||
LOG(LogWarning) << "Gamelist: folder doesn't exist, won't create it";
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -93,7 +93,7 @@ void parseGamelist(SystemData* system)
|
|||
if (!Utils::FileSystem::exists(xmlpath))
|
||||
return;
|
||||
|
||||
LOG(LogInfo) << "Parsing XML file \"" << xmlpath << "\"...";
|
||||
LOG(LogInfo) << "Parsing gamelist file \"" << xmlpath << "\"...";
|
||||
|
||||
pugi::xml_document doc;
|
||||
#if defined(_WIN64)
|
||||
|
@ -104,14 +104,14 @@ void parseGamelist(SystemData* system)
|
|||
#endif
|
||||
|
||||
if (!result) {
|
||||
LOG(LogError) << "Error parsing XML file \"" << xmlpath <<
|
||||
"\"!\n " <<result.description();
|
||||
LOG(LogError) << "Error parsing gamelist file \"" << xmlpath <<
|
||||
"\": " << result.description();
|
||||
return;
|
||||
}
|
||||
|
||||
pugi::xml_node root = doc.child("gameList");
|
||||
if (!root) {
|
||||
LOG(LogError) << "Could not find <gameList> node in gamelist \"" << xmlpath << "\"!";
|
||||
LOG(LogError) << "Could not find <gameList> node in gamelist \"" << xmlpath << "\"";
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -130,7 +130,8 @@ void parseGamelist(SystemData* system)
|
|||
relativeTo, false);
|
||||
|
||||
if (!trustGamelist && !Utils::FileSystem::exists(path)) {
|
||||
LOG(LogWarning) << "File \"" << path << "\" does not exist, ignoring.";
|
||||
LOG(LogWarning) << (type == GAME ? "File \"" : "Folder \"") << path <<
|
||||
"\" does not exist, ignoring entry";
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -138,14 +139,15 @@ void parseGamelist(SystemData* system)
|
|||
// it is located.
|
||||
if (!showHiddenFiles && (Utils::FileSystem::isHidden(path) ||
|
||||
Utils::FileSystem::isHidden(Utils::FileSystem::getParent(path)))) {
|
||||
LOG(LogDebug) << "Gamelist::parseGamelist(): Skipping hidden file " << path;
|
||||
LOG(LogDebug) << "Gamelist::parseGamelist(): Skipping hidden file \"" <<
|
||||
path << "\"";
|
||||
continue;
|
||||
}
|
||||
|
||||
FileData* file = findOrCreateFile(system, path, type);
|
||||
if (!file) {
|
||||
LOG(LogError) << "Error finding/creating FileData for \"" <<
|
||||
path << "\", skipping.";
|
||||
path << "\", skipping entry";
|
||||
continue;
|
||||
}
|
||||
else if (!file->isArcadeAsset()) {
|
||||
|
@ -163,8 +165,9 @@ void parseGamelist(SystemData* system)
|
|||
// but that is fine as the option to show hidden files is defined as requiring an
|
||||
// application restart.
|
||||
if (!Settings::getInstance()->getBool("ShowHiddenGames") && file->getHidden()) {
|
||||
LOG(LogDebug) << "Gamelist::parseGamelist(): Skipping hidden entry '" <<
|
||||
file->getName() << "'" << " (" << file->getPath() << ").";
|
||||
LOG(LogDebug) << "Gamelist::parseGamelist(): Skipping hidden " <<
|
||||
(type == GAME ? "file" : "folder") << " entry \"" <<
|
||||
file->getName() << "\"" << " (\"" << file->getPath() << "\")";
|
||||
delete file;
|
||||
}
|
||||
}
|
||||
|
@ -223,7 +226,7 @@ void updateGamelist(SystemData* system)
|
|||
#endif
|
||||
|
||||
if (!result) {
|
||||
LOG(LogError) << "Error parsing XML file \"" << xmlReadPath << "\"!\n " <<
|
||||
LOG(LogError) << "Error parsing gamelist file \"" << xmlReadPath << "\": " <<
|
||||
result.description();
|
||||
return;
|
||||
}
|
||||
|
@ -231,7 +234,7 @@ void updateGamelist(SystemData* system)
|
|||
root = doc.child("gameList");
|
||||
if (!root) {
|
||||
LOG(LogError) << "Could not find <gameList> node in gamelist \"" <<
|
||||
xmlReadPath << "\"!";
|
||||
xmlReadPath << "\"";
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -263,7 +266,7 @@ void updateGamelist(SystemData* system)
|
|||
fileNode = fileNode.next_sibling(tag)) {
|
||||
pugi::xml_node pathNode = fileNode.child("path");
|
||||
if (!pathNode) {
|
||||
LOG(LogError) << "<" << tag << "> node contains no <path> child!";
|
||||
LOG(LogError) << "<" << tag << "> node contains no <path> child";
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -296,7 +299,7 @@ void updateGamelist(SystemData* system)
|
|||
Utils::FileSystem::createDirectory(Utils::FileSystem::getParent(xmlWritePath));
|
||||
|
||||
LOG(LogDebug) << "Gamelist::updateGamelist(): Added/updated " << numUpdated <<
|
||||
(numUpdated == 1 ? " entity in '" : " entities in '") << xmlReadPath << "'";
|
||||
(numUpdated == 1 ? " entity in '" : " entities in \"") << xmlReadPath << "\"";
|
||||
|
||||
#if defined(_WIN64)
|
||||
if (!doc.save_file(Utils::String::stringToWideString(xmlWritePath).c_str())) {
|
||||
|
@ -304,11 +307,11 @@ void updateGamelist(SystemData* system)
|
|||
if (!doc.save_file(xmlWritePath.c_str())) {
|
||||
#endif
|
||||
LOG(LogError) << "Error saving gamelist.xml to \"" <<
|
||||
xmlWritePath << "\" (for system " << system->getName() << ")!";
|
||||
xmlWritePath << "\" (for system " << system->getName() << ")";
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
LOG(LogError) << "Found no root folder for system \"" << system->getName() << "\"!";
|
||||
LOG(LogError) << "Found no root folder for system \"" << system->getName() << "\"";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -104,12 +104,12 @@ bool SystemData::populateFolder(FileData* folder)
|
|||
const std::string& folderPath = folder->getPath();
|
||||
if (!Utils::FileSystem::exists(folderPath)) {
|
||||
LOG(LogDebug) << "SystemData::populateFolder(): Folder with path \"" <<
|
||||
folderPath << "\" does not exist.";
|
||||
folderPath << "\" does not exist";
|
||||
return false;
|
||||
}
|
||||
if (!Utils::FileSystem::isDirectory(folderPath)) {
|
||||
LOG(LogWarning) << "Folder with path \"" <<
|
||||
folderPath << "\" is not a directory.";
|
||||
folderPath << "\" is not a directory";
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -139,8 +139,12 @@ bool SystemData::populateFolder(FileData* folder)
|
|||
filePath = *it;
|
||||
|
||||
// Skip hidden files and folders.
|
||||
if (!showHiddenFiles && Utils::FileSystem::isHidden(filePath))
|
||||
if (!showHiddenFiles && Utils::FileSystem::isHidden(filePath)) {
|
||||
LOG(LogDebug) << "SystemData::populateFolder(): Skipping hidden " <<
|
||||
(Utils::FileSystem::isDirectory(filePath) ? "directory \"" : "file \"") <<
|
||||
filePath << "\"";
|
||||
continue;
|
||||
}
|
||||
|
||||
// This is a little complicated because we allow a list
|
||||
// of extensions to be defined (delimited with a space).
|
||||
|
@ -221,17 +225,17 @@ bool SystemData::loadConfig()
|
|||
deleteSystems();
|
||||
|
||||
std::string path = getConfigPath(false);
|
||||
const std::string rompath = FileData::getROMDirectory();
|
||||
|
||||
LOG(LogInfo) << "Loading system configuration file " << path << "...";
|
||||
const std::string rompath = FileData::getROMDirectory();
|
||||
|
||||
if (!Utils::FileSystem::exists(path)) {
|
||||
LOG(LogWarning) << "es_systems.cfg does not exist.";
|
||||
LOG(LogWarning) << "Systems configuration file does not exist";
|
||||
if (copyConfigTemplate(getConfigPath(true)))
|
||||
return false;
|
||||
path = getConfigPath(false);
|
||||
}
|
||||
|
||||
LOG(LogInfo) << "Parsing systems configuration file \"" << path << "\"...";
|
||||
|
||||
pugi::xml_document doc;
|
||||
#if defined(_WIN64)
|
||||
pugi::xml_parse_result res = doc.load_file(Utils::String::stringToWideString(path).c_str());
|
||||
|
@ -249,7 +253,7 @@ bool SystemData::loadConfig()
|
|||
pugi::xml_node systemList = doc.child("systemList");
|
||||
|
||||
if (!systemList) {
|
||||
LOG(LogError) << "es_systems.cfg is missing the <systemList> tag.";
|
||||
LOG(LogError) << "es_systems.cfg is missing the <systemList> tag";
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -307,7 +311,7 @@ bool SystemData::loadConfig()
|
|||
// Validate.
|
||||
if (name.empty() || path.empty() || extensions.empty() || cmd.empty()) {
|
||||
LOG(LogError) << "System \"" << name <<
|
||||
"\" is missing name, path, extension, or command.";
|
||||
"\" is missing name, path, extension, or command";
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -349,7 +353,7 @@ bool SystemData::loadConfig()
|
|||
|
||||
if (newSys->getRootFolder()->getChildrenByFilename().size() == 0 || onlyHidden) {
|
||||
LOG(LogDebug) << "SystemData::loadConfig(): System \"" << name <<
|
||||
"\" has no games, ignoring it.";
|
||||
"\" has no games, ignoring it";
|
||||
delete newSys;
|
||||
delete envData;
|
||||
}
|
||||
|
@ -374,25 +378,30 @@ bool SystemData::copyConfigTemplate(const std::string& path)
|
|||
{
|
||||
std::string systemsTemplateFile;;
|
||||
|
||||
LOG(LogInfo) << "Attempting to copy template es_systems.cfg file from the resources directory.";
|
||||
LOG(LogInfo) <<
|
||||
"Attempting to copy template es_systems.cfg file from the resources directory...";
|
||||
|
||||
#if defined(_WIN64)
|
||||
systemsTemplateFile = ResourceManager::getInstance()->
|
||||
getResourcePath(":/templates/es_systems.cfg_windows");
|
||||
getResourcePath(":/templates/es_systems.cfg_windows", false);
|
||||
#elif defined(__APPLE__)
|
||||
systemsTemplateFile = ResourceManager::getInstance()->
|
||||
getResourcePath(":/templates/es_systems.cfg_macos");
|
||||
getResourcePath(":/templates/es_systems.cfg_macos", false);
|
||||
#elif defined(__unix__)
|
||||
systemsTemplateFile = ResourceManager::getInstance()->
|
||||
getResourcePath(":/templates/es_systems.cfg_unix");
|
||||
getResourcePath(":/templates/es_systems.cfg_unix", false);
|
||||
#endif
|
||||
|
||||
if (Utils::FileSystem::copyFile(systemsTemplateFile, path, false)) {
|
||||
LOG(LogError) << "Copying of es_systems.cfg template file failed.";
|
||||
if (systemsTemplateFile == "") {
|
||||
LOG(LogError) << "Can't find the es_systems.cfg template file";
|
||||
return true;
|
||||
}
|
||||
else if (Utils::FileSystem::copyFile(systemsTemplateFile, path, false)) {
|
||||
LOG(LogError) << "Copying of es_systems.cfg template file failed";
|
||||
return true;
|
||||
}
|
||||
|
||||
LOG(LogInfo) << "Template es_systems.cfg file copied successfully.";
|
||||
LOG(LogInfo) << "Template es_systems.cfg file copied successfully";
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -361,7 +361,7 @@ bool verifyHomeFolderExists()
|
|||
returnCode loadSystemConfigFile(std::string& errorMsg)
|
||||
{
|
||||
if (!SystemData::loadConfig()) {
|
||||
LOG(LogError) << "Could not parse systems configuration file.";
|
||||
LOG(LogError) << "Could not parse systems configuration file";
|
||||
errorMsg = "COULDN'T FIND THE SYSTEMS CONFIGURATION FILE.\n"
|
||||
"ATTEMPTED TO COPY A TEMPLATE ES_SYSTEMS.CFG FILE\n"
|
||||
"FROM THE EMULATIONSTATION RESOURCES DIRECTORY,\n"
|
||||
|
@ -373,7 +373,7 @@ returnCode loadSystemConfigFile(std::string& errorMsg)
|
|||
|
||||
if (SystemData::sSystemVector.size() == 0) {
|
||||
LOG(LogError) << "No systems found, does at least one system have a game present? "
|
||||
"(Check that the file extensions are supported.)";
|
||||
"(Check that the file extensions are supported)";
|
||||
errorMsg = "THE SYSTEMS CONFIGURATION FILE EXISTS, BUT NO\n"
|
||||
"GAME FILES WERE FOUND. EITHER PLACE YOUR GAMES\n"
|
||||
"IN THE CURRENTLY CONFIGURED ROM DIRECTORY OR\n"
|
||||
|
@ -462,7 +462,6 @@ int main(int argc, char* argv[])
|
|||
PowerSaver::init();
|
||||
ViewController::init(&window);
|
||||
CollectionSystemManager::init(&window);
|
||||
MameNames::init();
|
||||
window.pushGui(ViewController::get());
|
||||
|
||||
bool splashScreen = Settings::getInstance()->getBool("SplashScreen");
|
||||
|
@ -470,7 +469,7 @@ int main(int argc, char* argv[])
|
|||
SDL_Event event {};
|
||||
|
||||
if (!window.init()) {
|
||||
LOG(LogError) << "Window failed to initialize.";
|
||||
LOG(LogError) << "Window failed to initialize";
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -478,6 +477,7 @@ int main(int argc, char* argv[])
|
|||
if (event.type == SDL_QUIT)
|
||||
return 1;
|
||||
|
||||
MameNames::init();
|
||||
|
||||
if (splashScreen) {
|
||||
std::string progressText = "Loading...";
|
||||
|
@ -492,7 +492,7 @@ int main(int argc, char* argv[])
|
|||
if (returnCodeValue) {
|
||||
// Something went terribly wrong.
|
||||
if (errorMsg == "") {
|
||||
LOG(LogError) << "Unknown error occured while parsing system config file.";
|
||||
LOG(LogError) << "Unknown error occured while parsing systems configuration file";
|
||||
Renderer::deinit();
|
||||
return 1;
|
||||
}
|
||||
|
@ -686,7 +686,7 @@ int main(int argc, char* argv[])
|
|||
|
||||
processQuitMode();
|
||||
|
||||
LOG(LogInfo) << "EmulationStation cleanly shutting down.";
|
||||
LOG(LogInfo) << "EmulationStation cleanly shutting down";
|
||||
|
||||
#if defined(_WIN64)
|
||||
closeConsole();
|
||||
|
|
|
@ -167,7 +167,7 @@ bool SystemView::input(InputConfig* config, Input input)
|
|||
if (input.value != 0) {
|
||||
if (config->getDeviceId() == DEVICE_KEYBOARD && input.value && input.id == SDLK_r &&
|
||||
SDL_GetModState() & KMOD_LCTRL && Settings::getInstance()->getBool("Debug")) {
|
||||
LOG(LogInfo) << " Reloading all";
|
||||
LOG(LogInfo) << "Reloading all";
|
||||
ViewController::get()->reloadAll();
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@ MameNames::MameNames()
|
|||
if (!Utils::FileSystem::exists(xmlpath))
|
||||
return;
|
||||
|
||||
LOG(LogInfo) << "Parsing XML file \"" << xmlpath << "\"...";
|
||||
LOG(LogInfo) << "Parsing MAME names file \"" << xmlpath << "\"...";
|
||||
|
||||
pugi::xml_document doc;
|
||||
#if defined(_WIN64)
|
||||
|
@ -61,7 +61,7 @@ MameNames::MameNames()
|
|||
#endif
|
||||
|
||||
if (!result) {
|
||||
LOG(LogError) << "Error parsing XML file \"" << xmlpath << "\"!\n "
|
||||
LOG(LogError) << "Error parsing MAME names file \"" << xmlpath << "\": "
|
||||
<< result.description();
|
||||
return;
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ MameNames::MameNames()
|
|||
if (!Utils::FileSystem::exists(xmlpath))
|
||||
return;
|
||||
|
||||
LOG(LogInfo) << "Parsing XML file \"" << xmlpath << "\"...";
|
||||
LOG(LogInfo) << "Parsing MAME BIOSes file \"" << xmlpath << "\"...";
|
||||
|
||||
#if defined(_WIN64)
|
||||
result = doc.load_file(Utils::String::stringToWideString(xmlpath).c_str());
|
||||
|
@ -90,7 +90,7 @@ MameNames::MameNames()
|
|||
#endif
|
||||
|
||||
if (!result) {
|
||||
LOG(LogError) << "Error parsing XML file \"" << xmlpath << "\"!\n "
|
||||
LOG(LogError) << "Error parsing MAME BIOSes file \"" << xmlpath << "\": "
|
||||
<< result.description();
|
||||
return;
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ MameNames::MameNames()
|
|||
if (!Utils::FileSystem::exists(xmlpath))
|
||||
return;
|
||||
|
||||
LOG(LogInfo) << "Parsing XML file \"" << xmlpath << "\"...";
|
||||
LOG(LogInfo) << "Parsing MAME devices file \"" << xmlpath << "\"...";
|
||||
|
||||
#if defined(_WIN64)
|
||||
result = doc.load_file(Utils::String::stringToWideString(xmlpath).c_str());
|
||||
|
@ -116,7 +116,7 @@ MameNames::MameNames()
|
|||
#endif
|
||||
|
||||
if (!result) {
|
||||
LOG(LogError) << "Error parsing XML file \"" << xmlpath << "\"!\n "
|
||||
LOG(LogError) << "Error parsing MAME devices file \"" << xmlpath << "\": "
|
||||
<< result.description();
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -35,16 +35,16 @@ std::shared_ptr<Sound> Sound::getFromTheme(const std::shared_ptr<ThemeData>& the
|
|||
const std::string& view, const std::string& element)
|
||||
{
|
||||
LOG(LogDebug) << "Sound::getFromTheme(): Looking for navigation sound tag <sound name=\"" <<
|
||||
element << "\">.";
|
||||
element << "\">";
|
||||
|
||||
const ThemeData::ThemeElement* elem = theme->getElement(view, element, "sound");
|
||||
if (!elem || !elem->has("path")) {
|
||||
LOG(LogDebug) << "Sound::getFromTheme(): " << "Tag not found, using fallback sound file.";
|
||||
LOG(LogDebug) << "Sound::getFromTheme(): " << "Tag not found, using fallback sound file";
|
||||
return get(ResourceManager::getInstance()->
|
||||
getResourcePath(":/sounds/" + element + ".wav"));
|
||||
}
|
||||
|
||||
LOG(LogDebug) << "Sound::getFromTheme(): Tag found, ready to load theme sound file.";
|
||||
LOG(LogDebug) << "Sound::getFromTheme(): Tag found, ready to load theme sound file";
|
||||
return get(elem->get<std::string>("path"));
|
||||
}
|
||||
|
||||
|
@ -133,7 +133,7 @@ void Sound::init()
|
|||
// Convert buffer to stereo, 16bit, 44.1kHz.
|
||||
if (SDL_ConvertAudio(&cvt) < 0) {
|
||||
LOG(LogError) << "Error converting sound \"" << mPath <<
|
||||
"\" to 44.1kHz, 16bit, stereo format!\n" << " " << SDL_GetError();
|
||||
"\" to 44.1kHz, 16bit, stereo format: " << SDL_GetError();
|
||||
delete[] cvt.buf;
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -34,7 +34,8 @@ std::shared_ptr<ResourceManager>& ResourceManager::getInstance()
|
|||
return sInstance;
|
||||
}
|
||||
|
||||
std::string ResourceManager::getResourcePath(const std::string& path) const
|
||||
std::string ResourceManager::getResourcePath(const std::string& path,
|
||||
bool terminateOnFailure) const
|
||||
{
|
||||
// Check if this is a resource file.
|
||||
if ((path[0] == ':') && (path[1] == '/')) {
|
||||
|
@ -72,22 +73,27 @@ std::string ResourceManager::getResourcePath(const std::string& path) const
|
|||
if (Utils::FileSystem::exists(testExePath)) {
|
||||
return testExePath;
|
||||
}
|
||||
|
||||
// For missing resources, log an error and terminate the application. This should
|
||||
// indicate that we have a broken EmulationStation installation.
|
||||
// indicate that we have a broken EmulationStation installation. If the argument
|
||||
// terminateOnFailure is set to false though, then skip this step.
|
||||
else {
|
||||
LOG(LogError) << "Program resource missing: " << path;
|
||||
LOG(LogError) << "Tried to find the resource in the following locations:";
|
||||
LOG(LogError) << testHome;
|
||||
#if defined(__APPLE__)
|
||||
LOG(LogError) << applePackagePath;
|
||||
#elif defined(__unix__)
|
||||
LOG(LogError) << testDataPath;
|
||||
#endif
|
||||
LOG(LogError) << testExePath;
|
||||
LOG(LogError) << "Has EmulationStation been properly installed?";
|
||||
Scripting::fireEvent("quit");
|
||||
emergencyShutdown();
|
||||
if (terminateOnFailure) {
|
||||
LOG(LogError) << "Program resource missing: " << path;
|
||||
LOG(LogError) << "Tried to find the resource in the following locations:";
|
||||
LOG(LogError) << testHome;
|
||||
#if defined(__APPLE__)
|
||||
LOG(LogError) << applePackagePath;
|
||||
#elif defined(__unix__)
|
||||
LOG(LogError) << testDataPath;
|
||||
#endif
|
||||
LOG(LogError) << testExePath;
|
||||
LOG(LogError) << "Has EmulationStation been properly installed?";
|
||||
Scripting::fireEvent("quit");
|
||||
emergencyShutdown();
|
||||
}
|
||||
else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ public:
|
|||
void unloadAll();
|
||||
void reloadAll();
|
||||
|
||||
std::string getResourcePath(const std::string& path) const;
|
||||
std::string getResourcePath(const std::string& path, bool terminateOnFailure = true) const;
|
||||
const ResourceData getFileData(const std::string& path) const;
|
||||
bool fileExists(const std::string& path) const;
|
||||
|
||||
|
|
|
@ -566,7 +566,7 @@ namespace Utils
|
|||
|
||||
if (!_overwrite && exists(_destination_path)) {
|
||||
LOG(LogError) << "Destination file exists and the overwrite flag "
|
||||
"has not been set.";
|
||||
"has not been set";
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -578,8 +578,8 @@ namespace Utils
|
|||
#endif
|
||||
|
||||
if (sourceFile.fail()) {
|
||||
LOG(LogError) << "Couldn't read from source file (" << _source_path <<
|
||||
"), permission problems?";
|
||||
LOG(LogError) << "Couldn't read from source file \"" << _source_path <<
|
||||
"\", permission problems?";
|
||||
sourceFile.close();
|
||||
return true;
|
||||
}
|
||||
|
@ -592,8 +592,8 @@ namespace Utils
|
|||
#endif
|
||||
|
||||
if (targetFile.fail()) {
|
||||
LOG(LogError) << "Couldn't write to target file (" << _destination_path <<
|
||||
"), permission problems?";
|
||||
LOG(LogError) << "Couldn't write to target file \"" << _destination_path <<
|
||||
"\", permission problems?";
|
||||
targetFile.close();
|
||||
return true;
|
||||
}
|
||||
|
@ -624,7 +624,7 @@ namespace Utils
|
|||
|
||||
if (!_overwrite && exists(_destination_path)) {
|
||||
LOG(LogError) << "Destination file exists and the overwrite flag "
|
||||
"has not been set.";
|
||||
"has not been set";
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue