[Scummvm-cvs-logs] SF.net SVN: scummvm:[33585] scummvm/trunk

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Sun Aug 3 19:05:01 CEST 2008


Revision: 33585
          http://scummvm.svn.sourceforge.net/scummvm/?rev=33585&view=rev
Author:   fingolfin
Date:     2008-08-03 17:05:01 +0000 (Sun, 03 Aug 2008)

Log Message:
-----------
OSYSTEM: Pushed some SDL/Symbian specific code to the respective backends; made openConfigFileForReading/openConfigFileForWriting return 0 if they failed to open a file

Modified Paths:
--------------
    scummvm/trunk/backends/platform/sdl/sdl.cpp
    scummvm/trunk/backends/platform/sdl/sdl.h
    scummvm/trunk/backends/platform/symbian/src/SymbianOS.cpp
    scummvm/trunk/backends/platform/symbian/src/SymbianOS.h
    scummvm/trunk/common/system.cpp

Modified: scummvm/trunk/backends/platform/sdl/sdl.cpp
===================================================================
--- scummvm/trunk/backends/platform/sdl/sdl.cpp	2008-08-03 16:54:18 UTC (rev 33584)
+++ scummvm/trunk/backends/platform/sdl/sdl.cpp	2008-08-03 17:05:01 UTC (rev 33585)
@@ -26,6 +26,7 @@
 #include "backends/platform/sdl/sdl.h"
 #include "common/config-manager.h"
 #include "common/events.h"
+#include "common/file.h"
 #include "common/util.h"
 
 #include "backends/saves/default/default-saves.h"
@@ -40,6 +41,7 @@
 #define SAMPLES_PER_SEC 22050
 //#define SAMPLES_PER_SEC 44100
 
+
 /*
  * Include header files needed for the getFilesystemFactory() method.
  */
@@ -52,6 +54,29 @@
 #endif
 
 
+#if defined(UNIX)
+#ifdef MACOSX
+#define DEFAULT_CONFIG_FILE "Library/Preferences/ScummVM Preferences"
+#else
+#define DEFAULT_CONFIG_FILE ".scummvmrc"
+#endif
+#else
+#define DEFAULT_CONFIG_FILE "scummvm.ini"
+#endif
+
+
+
+/*
+ * Include header files needed for getDefaultConfigFileName().
+ */
+#if defined(WIN32)
+#include <windows.h>
+// winnt.h defines ARRAYSIZE, but we want our own one...
+#undef ARRAYSIZE
+#endif
+
+
+
 static Uint32 timer_handler(Uint32 interval, void *param) {
 	((DefaultTimerManager *)param)->handler();
 	return interval;
@@ -245,6 +270,92 @@
 	#endif
 }
 
+static Common::String getDefaultConfigFileName() {
+	char configFile[MAXPATHLEN];
+#if defined (WIN32) && !defined(_WIN32_WCE) && !defined(__SYMBIAN32__)
+	OSVERSIONINFO win32OsVersion;
+	ZeroMemory(&win32OsVersion, sizeof(OSVERSIONINFO));
+	win32OsVersion.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+	GetVersionEx(&win32OsVersion);
+	// Check for non-9X version of Windows.
+	if (win32OsVersion.dwPlatformId != VER_PLATFORM_WIN32_WINDOWS) {
+		// Use the Application Data directory of the user profile.
+		if (win32OsVersion.dwMajorVersion >= 5) {
+			if (!GetEnvironmentVariable("APPDATA", configFile, sizeof(configFile)))
+				error("Unable to access application data directory");
+		} else {
+			if (!GetEnvironmentVariable("USERPROFILE", configFile, sizeof(configFile)))
+				error("Unable to access user profile directory");
+
+			strcat(configFile, "\\Application Data");
+			CreateDirectory(configFile, NULL);
+		}
+
+		strcat(configFile, "\\ScummVM");
+		CreateDirectory(configFile, NULL);
+		strcat(configFile, "\\" DEFAULT_CONFIG_FILE);
+
+		if (fopen(configFile, "r") == NULL) {
+			// Check windows directory
+			char oldConfigFile[MAXPATHLEN];
+			GetWindowsDirectory(oldConfigFile, MAXPATHLEN);
+			strcat(oldConfigFile, "\\" DEFAULT_CONFIG_FILE);
+			if (fopen(oldConfigFile, "r")) {
+				printf("The default location of the config file (scummvm.ini) in ScummVM has changed,\n");
+				printf("under Windows NT4/2000/XP/Vista. You may want to consider moving your config\n");
+				printf("file from the old default location:\n");
+				printf("%s\n", oldConfigFile);
+				printf("to the new default location:\n");
+				printf("%s\n\n", configFile);
+				strcpy(configFile, oldConfigFile);
+			}
+		}
+	} else {
+		// Check windows directory
+		GetWindowsDirectory(configFile, MAXPATHLEN);
+		strcat(configFile, "\\" DEFAULT_CONFIG_FILE);
+	}
+#elif defined(UNIX)
+	// On UNIX type systems, by default we store the config file inside
+	// to the HOME directory of the user.
+	//
+	// GP2X is Linux based but Home dir can be read only so do not use
+	// it and put the config in the executable dir.
+	//
+	// On the iPhone, the home dir of the user when you launch the app
+	// from the Springboard, is /. Which we don't want.
+	const char *home = getenv("HOME");
+	if (home != NULL && strlen(home) < MAXPATHLEN)
+		snprintf(configFile, MAXPATHLEN, "%s/%s", home, DEFAULT_CONFIG_FILE);
+	else
+		strcpy(configFile, DEFAULT_CONFIG_FILE);
+#else
+	strcpy(configFile, DEFAULT_CONFIG_FILE);
+#endif
+
+	return configFile;
+}
+
+Common::SeekableReadStream *OSystem_SDL::openConfigFileForReading() {
+	Common::File *confFile = new Common::File();
+	assert(confFile);
+	if (!confFile->open(getDefaultConfigFileName())) {
+		delete confFile;
+		confFile = 0;
+	}
+	return confFile;
+}
+
+Common::WriteStream *OSystem_SDL::openConfigFileForWriting() {
+	Common::DumpFile *confFile = new Common::DumpFile();
+	assert(confFile);
+	if (!confFile->open(getDefaultConfigFileName())) {
+		delete confFile;
+		confFile = 0;
+	}
+	return confFile;
+}
+
 void OSystem_SDL::setWindowCaption(const char *caption) {
 	SDL_WM_SetCaption(caption, caption);
 }

Modified: scummvm/trunk/backends/platform/sdl/sdl.h
===================================================================
--- scummvm/trunk/backends/platform/sdl/sdl.h	2008-08-03 16:54:18 UTC (rev 33584)
+++ scummvm/trunk/backends/platform/sdl/sdl.h	2008-08-03 17:05:01 UTC (rev 33585)
@@ -210,6 +210,9 @@
 	virtual Common::SaveFileManager *getSavefileManager();
 	virtual FilesystemFactory *getFilesystemFactory();
 
+	virtual Common::SeekableReadStream *openConfigFileForReading();
+	virtual Common::WriteStream *openConfigFileForWriting();
+
 protected:
 	bool _inited;
 

Modified: scummvm/trunk/backends/platform/symbian/src/SymbianOS.cpp
===================================================================
--- scummvm/trunk/backends/platform/symbian/src/SymbianOS.cpp	2008-08-03 16:54:18 UTC (rev 33584)
+++ scummvm/trunk/backends/platform/symbian/src/SymbianOS.cpp	2008-08-03 17:05:01 UTC (rev 33585)
@@ -30,6 +30,7 @@
 #include "backends/platform/symbian/src/SymbianActions.h"
 #include "common/config-manager.h"
 #include "common/events.h"
+#include "common/file.h"
 #include "gui/Actions.h"
 #include "gui/Key.h"
 #include "gui/message.h"
@@ -42,6 +43,10 @@
   #define SAMPLES_PER_SEC 16000
 #endif
 
+
+#define DEFAULT_CONFIG_FILE "scummvm.ini"
+
+
 #define KInputBufferLength 128
 // Symbian libc file functionality in order to provide shared file handles
 struct TSymbianFileEntry {
@@ -122,6 +127,34 @@
 	return &SymbianFilesystemFactory::instance();
 }
 
+static Common::String getDefaultConfigFileName() {
+	char configFile[MAXPATHLEN];
+	strcpy(configFile, Symbian::GetExecutablePath());
+	strcat(configFile, DEFAULT_CONFIG_FILE);
+	return configFile;
+}
+
+Common::SeekableReadStream *OSystem_SDL_Symbian::openConfigFileForReading() {
+	Common::File *confFile = new Common::File();
+	assert(confFile);
+	if (!confFile->open(getDefaultConfigFileName())) {
+		delete confFile;
+		confFile = 0;
+	}
+	return confFile;
+}
+
+Common::WriteStream *OSystem_SDL_Symbian::openConfigFileForWriting() {
+	Common::DumpFile *confFile = new Common::DumpFile();
+	assert(confFile);
+	if (!confFile->open(getDefaultConfigFileName())) {
+		delete confFile;
+		confFile = 0;
+	}
+	return confFile;
+}
+
+
 OSystem_SDL_Symbian::zoneDesc OSystem_SDL_Symbian::_zones[TOTAL_ZONES] = {
         { 0, 0, 320, 145 },
         { 0, 145, 150, 55 },

Modified: scummvm/trunk/backends/platform/symbian/src/SymbianOS.h
===================================================================
--- scummvm/trunk/backends/platform/symbian/src/SymbianOS.h	2008-08-03 16:54:18 UTC (rev 33584)
+++ scummvm/trunk/backends/platform/symbian/src/SymbianOS.h	2008-08-03 17:05:01 UTC (rev 33585)
@@ -71,6 +71,9 @@
 	static void symbianMixCallback(void *s, byte *samples, int len);
 
 	virtual FilesystemFactory *getFilesystemFactory();
+
+	virtual Common::SeekableReadStream *openConfigFileForReading();
+	virtual Common::WriteStream *openConfigFileForWriting();
 public:
 	// vibration support
 #ifdef USE_VIBRA_SE_PXXX

Modified: scummvm/trunk/common/system.cpp
===================================================================
--- scummvm/trunk/common/system.cpp	2008-08-03 16:54:18 UTC (rev 33584)
+++ scummvm/trunk/common/system.cpp	2008-08-03 17:05:01 UTC (rev 33585)
@@ -149,62 +149,14 @@
 
 
 #if defined(UNIX)
-#ifdef MACOSX
-#define DEFAULT_CONFIG_FILE "Library/Preferences/ScummVM Preferences"
-#else
 #define DEFAULT_CONFIG_FILE ".scummvmrc"
-#endif
 #else
 #define DEFAULT_CONFIG_FILE "scummvm.ini"
 #endif
 
 static Common::String getDefaultConfigFileName() {
 	char configFile[MAXPATHLEN];
-#if defined (WIN32) && !defined(_WIN32_WCE) && !defined(__SYMBIAN32__)
-	OSVERSIONINFO win32OsVersion;
-	ZeroMemory(&win32OsVersion, sizeof(OSVERSIONINFO));
-	win32OsVersion.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-	GetVersionEx(&win32OsVersion);
-	// Check for non-9X version of Windows.
-	if (win32OsVersion.dwPlatformId != VER_PLATFORM_WIN32_WINDOWS) {
-		// Use the Application Data directory of the user profile.
-		if (win32OsVersion.dwMajorVersion >= 5) {
-			if (!GetEnvironmentVariable("APPDATA", configFile, sizeof(configFile)))
-				error("Unable to access application data directory");
-		} else {
-			if (!GetEnvironmentVariable("USERPROFILE", configFile, sizeof(configFile)))
-				error("Unable to access user profile directory");
-
-			strcat(configFile, "\\Application Data");
-			CreateDirectory(configFile, NULL);
-		}
-
-		strcat(configFile, "\\ScummVM");
-		CreateDirectory(configFile, NULL);
-		strcat(configFile, "\\" DEFAULT_CONFIG_FILE);
-
-		if (fopen(configFile, "r") == NULL) {
-			// Check windows directory
-			char oldConfigFile[MAXPATHLEN];
-			GetWindowsDirectory(oldConfigFile, MAXPATHLEN);
-			strcat(oldConfigFile, "\\" DEFAULT_CONFIG_FILE);
-			if (fopen(oldConfigFile, "r")) {
-				printf("The default location of the config file (scummvm.ini) in ScummVM has changed,\n");
-				printf("under Windows NT4/2000/XP/Vista. You may want to consider moving your config\n");
-				printf("file from the old default location:\n");
-				printf("%s\n", oldConfigFile);
-				printf("to the new default location:\n");
-				printf("%s\n\n", configFile);
-				strcpy(configFile, oldConfigFile);
-			}
-		}
-	} else {
-		// Check windows directory
-		GetWindowsDirectory(configFile, MAXPATHLEN);
-		strcat(configFile, "\\" DEFAULT_CONFIG_FILE);
-	}
-
-#elif defined(PALMOS_MODE)
+#if defined(PALMOS_MODE)
 	strcpy(configFile,"/PALM/Programs/ScummVM/" DEFAULT_CONFIG_FILE);
 #elif defined(IPHONE)
 	strcpy(configFile, OSystem_IPHONE::getConfigPath());
@@ -212,23 +164,6 @@
 	((OSystem_PS2*)g_system)->makeConfigPath(configFile);
 #elif defined(__PSP__)
 	strcpy(configFile, "ms0:/" DEFAULT_CONFIG_FILE);
-#elif defined (__SYMBIAN32__)
-	strcpy(configFile, Symbian::GetExecutablePath());
-	strcat(configFile, DEFAULT_CONFIG_FILE);
-#elif defined(UNIX) && !defined(GP2X) && !defined(IPHONE)
-	// On UNIX type systems, by default we store the config file inside
-	// to the HOME directory of the user.
-	//
-	// GP2X is Linux based but Home dir can be read only so do not use
-	// it and put the config in the executable dir.
-	//
-	// On the iPhone, the home dir of the user when you launch the app
-	// from the Springboard, is /. Which we don't want.
-	const char *home = getenv("HOME");
-	if (home != NULL && strlen(home) < MAXPATHLEN)
-		snprintf(configFile, MAXPATHLEN, "%s/%s", home, DEFAULT_CONFIG_FILE);
-	else
-		strcpy(configFile, DEFAULT_CONFIG_FILE);
 #else
 	strcpy(configFile, DEFAULT_CONFIG_FILE);
 #endif
@@ -239,7 +174,10 @@
 Common::SeekableReadStream *OSystem::openConfigFileForReading() {
 	Common::File *confFile = new Common::File();
 	assert(confFile);
-	confFile->open(getDefaultConfigFileName());
+	if (!confFile->open(getDefaultConfigFileName())) {
+		delete confFile;
+		confFile = 0;
+	}
 	return confFile;
 }
 
@@ -249,7 +187,10 @@
 #else
 	Common::DumpFile *confFile = new Common::DumpFile();
 	assert(confFile);
-	confFile->open(getDefaultConfigFileName());
+	if (!confFile->open(getDefaultConfigFileName())) {
+		delete confFile;
+		confFile = 0;
+	}
 	return confFile;
 #endif
 }


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list