From bae300a6a7c4b63e321a5502374f1233501a364d Mon Sep 17 00:00:00 2001 From: Robert Knight Date: Wed, 24 Aug 2011 12:59:51 +0100 Subject: [PATCH] Report an error on update installation if the update script cannot be read. --- src/UpdateInstaller.cpp | 19 +++++++++++++++++++ src/UpdateInstaller.h | 1 + src/UpdateScript.cpp | 7 +++++++ src/UpdateScript.h | 1 + 4 files changed, 28 insertions(+) diff --git a/src/UpdateInstaller.cpp b/src/UpdateInstaller.cpp index 7a181e2..22272c8 100644 --- a/src/UpdateInstaller.cpp +++ b/src/UpdateInstaller.cpp @@ -55,8 +55,27 @@ std::list UpdateInstaller::updaterArgs() const return args; } +void UpdateInstaller::reportError(const std::string& error) +{ + if (m_observer) + { + m_observer->updateError(error); + } +} + void UpdateInstaller::run() throw () { + if (!m_script || !m_script->isValid()) + { + reportError("Unable to read update script"); + return; + } + if (m_installDir.empty()) + { + reportError("No installation directory specified"); + return; + } + std::string updaterPath; try { diff --git a/src/UpdateInstaller.h b/src/UpdateInstaller.h index 68a87d1..44bcf1b 100644 --- a/src/UpdateInstaller.h +++ b/src/UpdateInstaller.h @@ -43,6 +43,7 @@ class UpdateInstaller void uninstallFiles(); void installFile(const UpdateScriptFile& file); void backupFile(const std::string& path); + void reportError(const std::string& error); std::list updaterArgs() const; diff --git a/src/UpdateScript.cpp b/src/UpdateScript.cpp index ac4379c..c9e2d69 100644 --- a/src/UpdateScript.cpp +++ b/src/UpdateScript.cpp @@ -11,6 +11,8 @@ UpdateScript::UpdateScript() void UpdateScript::parse(const std::string& path) { + m_path.clear(); + TiXmlDocument document(path); if (document.LoadFile()) { @@ -38,6 +40,11 @@ void UpdateScript::parse(const std::string& path) } } +bool UpdateScript::isValid() const +{ + return !m_path.empty(); +} + void UpdateScript::parseUpdate(const TiXmlElement* updateNode) { const TiXmlElement* depsNode = updateNode->FirstChildElement("dependencies"); diff --git a/src/UpdateScript.h b/src/UpdateScript.h index baa4537..bb257f6 100644 --- a/src/UpdateScript.h +++ b/src/UpdateScript.h @@ -57,6 +57,7 @@ class UpdateScript void parse(const std::string& path); + bool isValid() const; const std::string path() const; const std::vector& dependencies() const; const std::vector& packages() const;