aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2005-04-30 20:48:59 +0000
committerEugene Sandulenko2005-04-30 20:48:59 +0000
commit280abe9e91c164548b8f2c6692de232c9e316315 (patch)
tree51f3089012924e2023445d47fe863fd385c7a271
parent13a13ae10a31603488684bcf935f3ddb3cef47dd (diff)
downloadscummvm-rg350-280abe9e91c164548b8f2c6692de232c9e316315.tar.gz
scummvm-rg350-280abe9e91c164548b8f2c6692de232c9e316315.tar.bz2
scummvm-rg350-280abe9e91c164548b8f2c6692de232c9e316315.zip
Convert windows path separators before opening wiz files.
svn-id: r17874
-rw-r--r--scumm/wiz_he.cpp28
1 files changed, 23 insertions, 5 deletions
diff --git a/scumm/wiz_he.cpp b/scumm/wiz_he.cpp
index 2ce731ea41..825ea5610e 100644
--- a/scumm/wiz_he.cpp
+++ b/scumm/wiz_he.cpp
@@ -1631,6 +1631,9 @@ void ScummEngine_v90he::fillWizParallelogram(const WizParameters *params) {
}
void ScummEngine_v90he::processWizImage(const WizParameters *params) {
+ char buf[512];
+ unsigned int i;
+
debug(2, "processWizImage: processMode %d", params->processMode);
switch (params->processMode) {
case 0:
@@ -1645,7 +1648,15 @@ void ScummEngine_v90he::processWizImage(const WizParameters *params) {
case 3:
if (params->processFlags & kWPFUseFile) {
File f;
- if (f.open((const char *)params->filename, File::kFileReadMode)) {
+
+ // Convert Windows path separators to something more portable
+ strncpy(buf, (const char *)params->filename, 512);
+ for (i = 0; i < strlen(buf); i++) {
+ if (buf[i] == '\\')
+ buf[i] = '/';
+ }
+
+ if (f.open((const char *)buf, File::kFileReadMode)) {
uint32 id = f.readUint32LE();
if (id == TO_LE_32(MKID('AWIZ')) || id == TO_LE_32(MKID('MULT'))) {
uint32 size = f.readUint32BE();
@@ -1653,7 +1664,7 @@ void ScummEngine_v90he::processWizImage(const WizParameters *params) {
byte *p = res.createResource(rtImage, params->img.resNum, size);
if (f.read(p, size) != size) {
res.nukeResource(rtImage, params->img.resNum);
- warning("i/o error when reading '%s'", params->filename);
+ warning("i/o error when reading '%s'", buf);
VAR(VAR_GAME_LOADED) = -2;
VAR(119) = -2;
} else {
@@ -1668,7 +1679,7 @@ void ScummEngine_v90he::processWizImage(const WizParameters *params) {
} else {
VAR(VAR_GAME_LOADED) = -3;
VAR(119) = -3;
- warning("Unable to open for read '%s'", params->filename);
+ warning("Unable to open for read '%s'", buf);
}
}
break;
@@ -1684,8 +1695,15 @@ void ScummEngine_v90he::processWizImage(const WizParameters *params) {
// TODO Write image to file
break;
case 0:
- if (!f.open((const char *)params->filename, File::kFileWriteMode)) {
- warning("Unable to open for write '%s'", params->filename);
+ // Convert Windows path separators to something more portable
+ strncpy(buf, (const char *)params->filename, 512);
+ for (i = 0; i < strlen(buf); i++) {
+ if (buf[i] == '\\')
+ buf[i] = '/';
+ }
+
+ if (!f.open((const char *)buf, File::kFileWriteMode)) {
+ warning("Unable to open for write '%s'", buf);
VAR(119) = -3;
} else {
byte *p = getResourceAddress(rtImage, params->img.resNum);