changeset 7911:6a9e47d1d4dd draft

(svn r11464) -Fix: some issue that made OpenTTD on MorphOS seriously unplayable.
author rubidium <rubidium@openttd.org>
date Sun, 18 Nov 2007 18:28:32 +0000
parents 4e0322d86051
children 357db556fc02
files src/fileio.cpp src/fios.cpp
diffstat 2 files changed, 26 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/fileio.cpp
+++ b/src/fileio.cpp
@@ -363,6 +363,16 @@
 	CreateDirectory(OTTD2FS(name), NULL);
 #elif defined(OS2) && !defined(__INNOTEK_LIBC__)
 	mkdir(OTTD2FS(name));
+#elif defined(__MORPHOS__) || defined(__AMIGAOS__)
+	char buf[MAX_PATH];
+	ttd_strlcpy(buf, name, MAX_PATH);
+
+	size_t len = strlen(name) - 1;
+	if (buf[len] == '/') {
+		buf[len] = '\0'; // Kill pathsep, so mkdir() will not fail
+	}
+
+	mkdir(OTTD2FS(buf), 0755);
 #else
 	mkdir(OTTD2FS(name), 0755);
 #endif
@@ -720,7 +730,10 @@
 	char *autosave_dir = str_fmt("%s%s", _personal_dir, FioGetSubdirectory(AUTOSAVE_DIR));
 
 	/* Make the necessary folders */
+#if !defined(__MORPHOS__) && !defined(__AMIGA__) && defined(WITH_PERSONAL_DIR)
 	FioCreateDirectory(_personal_dir);
+#endif
+
 	FioCreateDirectory(save_dir);
 	FioCreateDirectory(autosave_dir);
 
--- a/src/fios.cpp
+++ b/src/fios.cpp
@@ -145,15 +145,7 @@
 	case FIOS_TYPE_BMP:
 	{
 		static char str_buffr[512];
-
-#if defined(__MORPHOS__) || defined(__AMIGAOS__)
-		/* On MorphOS or AmigaOS paths look like: "Volume:directory/subdirectory" */
-		if (FiosIsRoot(path)) {
-			snprintf(str_buffr, lengthof(str_buffr), "%s:%s", path, item->name);
-		} else // XXX - only next line!
-#endif
 		snprintf(str_buffr, lengthof(str_buffr), "%s%s", path, item->name);
-
 		return str_buffr;
 	}
 	}
@@ -170,8 +162,21 @@
 	/* Don't append the extension if it is already there */
 	period = strrchr(name, '.');
 	if (period != NULL && strcasecmp(period, extension) == 0) extension = "";
+#if  defined(__MORPHOS__) || defined(__AMIGAOS__)
+	if (_fios_path != NULL) {
+		unsigned char sepchar = _fios_path[(strlen(_fios_path) - 1)];
 
+		if (sepchar != ':' && sepchar != '/') {
+			snprintf(buf, size, "%s" PATHSEP "%s%s", _fios_path, name, extension);
+		} else {
+			snprintf(buf, size, "%s%s%s", _fios_path, name, extension);
+		}
+	} else {
+		snprintf(buf, size, "%s%s", name, extension);
+	}
+#else
 	snprintf(buf, size, "%s" PATHSEP "%s%s", _fios_path, name, extension);
+#endif
 }
 
 #if defined(WIN32)