mirror of
https://github.com/libretro/scummvm.git
synced 2025-03-04 17:29:11 +00:00
OSYSTEM: Pushed some SDL/Symbian specific code to the respective backends; made openConfigFileForReading/openConfigFileForWriting return 0 if they failed to open a file
svn-id: r33585
This commit is contained in:
parent
6377b8bdd5
commit
b54a1227d9
@ -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 @@ FilesystemFactory *OSystem_SDL::getFilesystemFactory() {
|
||||
#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);
|
||||
}
|
||||
|
@ -210,6 +210,9 @@ public:
|
||||
virtual Common::SaveFileManager *getSavefileManager();
|
||||
virtual FilesystemFactory *getFilesystemFactory();
|
||||
|
||||
virtual Common::SeekableReadStream *openConfigFileForReading();
|
||||
virtual Common::WriteStream *openConfigFileForWriting();
|
||||
|
||||
protected:
|
||||
bool _inited;
|
||||
|
||||
|
@ -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 @@ FilesystemFactory *OSystem_SDL_Symbian::getFilesystemFactory() {
|
||||
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 },
|
||||
|
@ -71,6 +71,9 @@ protected:
|
||||
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
|
||||
|
@ -149,62 +149,14 @@ FIXME: The config file loading code below needs to be cleaned up.
|
||||
|
||||
|
||||
#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 @@ static Common::String getDefaultConfigFileName() {
|
||||
((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 @@ static Common::String getDefaultConfigFileName() {
|
||||
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 @@ Common::WriteStream *OSystem::openConfigFileForWriting() {
|
||||
#else
|
||||
Common::DumpFile *confFile = new Common::DumpFile();
|
||||
assert(confFile);
|
||||
confFile->open(getDefaultConfigFileName());
|
||||
if (!confFile->open(getDefaultConfigFileName())) {
|
||||
delete confFile;
|
||||
confFile = 0;
|
||||
}
|
||||
return confFile;
|
||||
#endif
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user