aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/composer/composer.cpp18
-rw-r--r--engines/composer/composer.h1
2 files changed, 18 insertions, 1 deletions
diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp
index fba699660d..961665bafc 100644
--- a/engines/composer/composer.cpp
+++ b/engines/composer/composer.cpp
@@ -486,7 +486,12 @@ Common::Error ComposerEngine::run() {
_queuedScripts[i]._scriptId = 0;
}
- _bookIni.loadFromFile("programs/book.ini");
+ _directoriesToStrip = 1;
+ if (!_bookIni.loadFromFile("book.ini")) {
+ _directoriesToStrip = 0;
+ if (!_bookIni.loadFromFile("programs/book.ini"))
+ error("failed to find book.ini");
+ }
uint width = 640;
if (_bookIni.hasKey("Width", "Common"))
@@ -595,6 +600,17 @@ Common::String ComposerEngine::getFilename(const Common::String &section, uint i
Common::String filename = getStringFromConfig(section, key);
while (filename.size() && (filename[0] == '~' || filename[0] == ':' || filename[0] == '\\'))
filename = filename.c_str() + 1;
+
+ uint slashesToStrip = _directoriesToStrip;
+ while (slashesToStrip--) {
+ for (uint i = 0; i < filename.size(); i++) {
+ if (filename[i] != '\\')
+ continue;
+ filename = filename.c_str() + i + 1;
+ break;
+ }
+ }
+
Common::String outFilename;
for (uint i = 0; i < filename.size(); i++) {
if (filename[i] == '\\')
diff --git a/engines/composer/composer.h b/engines/composer/composer.h
index e535bfbc6e..b18b3575f2 100644
--- a/engines/composer/composer.h
+++ b/engines/composer/composer.h
@@ -164,6 +164,7 @@ private:
Graphics::Surface _surface;
Common::List<Sprite> _sprites;
+ uint _directoriesToStrip;
Common::ConfigFile _bookIni;
Common::List<Library> _libraries;