--- savagewheels-1.6.0/src/Main.cpp.old 2016-04-14 21:18:38.115071742 -0700
+++ savagewheels-1.6.0/src/Main.cpp 2016-04-14 22:01:42.375422000 -0700
@@ -43,10 +43,17 @@
- * Alpha Release: 29.06.2003
- */
-
- #include "Main.h"
-
-+const char *sys_datadir;
-+const char *usr_cfgdir;
-+const char *usr_datadir;
-+
-+char *ART_FILE;
-+char *BINDINGS_FILE;
-+
- int main( int argc, char *argv[] )
- {
- bool hardware_support = true;
- /*
- * Start the game in a window by default.
+ * Alpha Release: 29.06.2003\r
+ */\r
+ \r
+ #include "Main.h"\r
+ \r
++const char *sys_datadir;\r
++const char *usr_cfgdir;\r
++const char *usr_datadir;\r
++\r
++char *ART_FILE;\r
++char *BINDINGS_FILE;\r
++\r
+ int main( int argc, char *argv[] )\r
+ {\r
+ bool hardware_support = true;\r
+ /*\r
+ * Start the game in a window by default.\r
@@ -57,16 +64,92 @@ int main( int argc, char *argv[] )
- * Linux Note: Running the game in fullscreen would sometimes crash the gfx manager.
- * This is probably due to some video drivers. I was so far able to reproduce it on
- * ATI Mobility type of video cards.
- */
- bool fullscreen = false;
-+ String tmp;
-
- #ifdef LINUX_BUILD
-+ sys_datadir = getenv("SAVAGEWHEELS_SYS_DATADIR");
-+ if (sys_datadir == NULL)
-+ {
-+ fprintf(stderr, "SAVAGEWHEELS_SYS_DATADIR not set.\n");
-+ return 1;
-+ }
-+ sys_datadir = strdup(sys_datadir);
-+
-+ usr_cfgdir = getenv("SAVAGEWHEELS_USR_CONFDIR");
-+ if (usr_cfgdir == NULL)
-+ {
-+ fprintf(stderr, "SAVAGEWHEELS_USR_CONFDIR not set.\n");
-+ return 1;
-+ }
-+ usr_cfgdir = strdup(usr_cfgdir);
-+
-+ usr_datadir = getenv("SAVAGEWHEELS_USR_DATADIR");
-+ if (usr_datadir == NULL)
-+ {
-+ fprintf(stderr, "SAVAGEWHEELS_USR_DATADIR not set.\n");
-+ return 1;
-+ }
-+ usr_datadir = strdup(usr_datadir);
-+
-+ if (sys_datadir == NULL || usr_cfgdir == NULL || usr_datadir == NULL)
-+ {
-+ fprintf(stderr, "Insufficient memory. Execution aborted.\n");
-+ return 1;
-+ }
-+
- setenv("SDL_VIDEO_CENTERED", "1", 1);
- #else
-+ sys_datadir = usr_cfgdir = usr_datadir = "./";
- _putenv("SDL_VIDEO_CENTERED=1");
- #endif
-+ int len;
-+ len = snprintf(NULL, 0, "%s/graphics/gfxdata.kdf", sys_datadir);
-+ if (len < 0)
-+ {
-+ fprintf(stderr,
-+ "Unable to store '%s/graphics/gfxdata.kdf': %s\n",
-+ sys_datadir, strerror(errno));
-+ return 1;
-+ }
-+ if (len == INT_MAX)
-+ {
-+ fprintf(stderr, "Unable to store '%s/graphics/gfxdata.kdf': "
-+ "Path too log\n", sys_datadir);
-+ return 1;
-+ }
-+ ART_FILE = new (std::nothrow) char[len + 1];
-+ if (ART_FILE == NULL)
-+ {
-+ fprintf(stderr, "Insufficent memory. Execution aborted.\n");
-+ return 1;
-+ }
-+ sprintf(ART_FILE, "%s/graphics/gfxdata.kdf", sys_datadir);
-+
-+ len = snprintf(NULL, 0, "%s/bindings.xml", usr_cfgdir);
-+ if (len < 0)
-+ {
-+ fprintf(stderr,
-+ "Unable to store '%s/bindings.xml': %s\n", usr_cfgdir,
-+ strerror(errno));
-+ return 1;
-+ }
-+ if (len == INT_MAX)
-+ {
-+ fprintf(stderr, "Unable to store '%s/bindings.xml': "
-+ "Path too log\n", usr_cfgdir);
-+ return 1;
-+ }
-+ BINDINGS_FILE = new (std::nothrow) char[len + 1];
-+ if (BINDINGS_FILE == NULL)
-+ {
-+ fprintf(stderr, "Insufficent memory. Execution aborted.\n");
-+ return 1;
-+ }
-+ sprintf(BINDINGS_FILE, "%s/bindings.xml", usr_cfgdir);
-
- if (argc > 1) {
- for (int i = 1; i < argc; i++) {
- if (!strncmp(argv[i], "-wnd", 4)) {
- fullscreen = false;
+ * Linux Note: Running the game in fullscreen would sometimes crash the gfx manager.\r
+ * This is probably due to some video drivers. I was so far able to reproduce it on\r
+ * ATI Mobility type of video cards.\r
+ */\r
+ bool fullscreen = false;\r
++ String tmp;\r
+ \r
+ #ifdef LINUX_BUILD\r
++ sys_datadir = getenv("SAVAGEWHEELS_SYS_DATADIR");\r
++ if (sys_datadir == NULL)\r
++ {\r
++ fprintf(stderr, "SAVAGEWHEELS_SYS_DATADIR not set.\n");\r
++ return 1;\r
++ }\r
++ sys_datadir = strdup(sys_datadir);\r
++\r
++ usr_cfgdir = getenv("SAVAGEWHEELS_USR_CONFDIR");\r
++ if (usr_cfgdir == NULL)\r
++ {\r
++ fprintf(stderr, "SAVAGEWHEELS_USR_CONFDIR not set.\n");\r
++ return 1;\r
++ }\r
++ usr_cfgdir = strdup(usr_cfgdir);\r
++\r
++ usr_datadir = getenv("SAVAGEWHEELS_USR_DATADIR");\r
++ if (usr_datadir == NULL)\r
++ {\r
++ fprintf(stderr, "SAVAGEWHEELS_USR_DATADIR not set.\n");\r
++ return 1;\r
++ }\r
++ usr_datadir = strdup(usr_datadir);\r
++\r
++ if (sys_datadir == NULL || usr_cfgdir == NULL || usr_datadir == NULL)\r
++ {\r
++ fprintf(stderr, "Insufficient memory. Execution aborted.\n");\r
++ return 1;\r
++ }\r
++\r
+ setenv("SDL_VIDEO_CENTERED", "1", 1);\r
+ #else\r
++ sys_datadir = usr_cfgdir = usr_datadir = "./";\r
+ _putenv("SDL_VIDEO_CENTERED=1");\r
+ #endif\r
++ int len;\r
++ len = snprintf(NULL, 0, "%s/graphics/gfxdata.kdf", sys_datadir);\r
++ if (len < 0)\r
++ {\r
++ fprintf(stderr,\r
++ "Unable to store '%s/graphics/gfxdata.kdf': %s\n",\r
++ sys_datadir, strerror(errno));\r
++ return 1;\r
++ }\r
++ if (len == INT_MAX)\r
++ {\r
++ fprintf(stderr, "Unable to store '%s/graphics/gfxdata.kdf': "\r
++ "Path too log\n", sys_datadir);\r
++ return 1;\r
++ }\r
++ ART_FILE = new (std::nothrow) char[len + 1];\r
++ if (ART_FILE == NULL)\r
++ {\r
++ fprintf(stderr, "Insufficent memory. Execution aborted.\n");\r
++ return 1;\r
++ }\r
++ sprintf(ART_FILE, "%s/graphics/gfxdata.kdf", sys_datadir);\r
++\r
++ len = snprintf(NULL, 0, "%s/bindings.xml", usr_cfgdir);\r
++ if (len < 0)\r
++ {\r
++ fprintf(stderr,\r
++ "Unable to store '%s/bindings.xml': %s\n", usr_cfgdir,\r
++ strerror(errno));\r
++ return 1;\r
++ }\r
++ if (len == INT_MAX)\r
++ {\r
++ fprintf(stderr, "Unable to store '%s/bindings.xml': "\r
++ "Path too log\n", usr_cfgdir);\r
++ return 1;\r
++ }\r
++ BINDINGS_FILE = new (std::nothrow) char[len + 1];\r
++ if (BINDINGS_FILE == NULL)\r
++ {\r
++ fprintf(stderr, "Insufficent memory. Execution aborted.\n");\r
++ return 1;\r
++ }\r
++ sprintf(BINDINGS_FILE, "%s/bindings.xml", usr_cfgdir);\r
+ \r
+ if (argc > 1) {\r
+ for (int i = 1; i < argc; i++) {\r
+ if (!strncmp(argv[i], "-wnd", 4)) {\r
+ fullscreen = false;\r
@@ -104,11 +187,12 @@
-
- /*
- * Load & Start Game
- */
-
-- OpenLog("debug.html");
-+ tmp = String(usr_datadir).append("/debug.html");
-+ OpenLog(tmp.c_str());
-
- CGame game;
- game.Execute(fullscreen, hardware_support);
- game.Close();
-
+ \r
+ /*\r
+ * Load & Start Game\r
+ */\r
+ \r
+- OpenLog("debug.html");\r
++ tmp = String(usr_datadir).append("/debug.html");\r
++ OpenLog(tmp.c_str());\r
+ \r
+ CGame game;\r
+ game.Execute(fullscreen, hardware_support);\r
+ game.Close();\r
+ \r
--- savagewheels-1.6.0/src/Main.h.old 2016-04-14 21:20:27.443522441 -0700
+++ savagewheels-1.6.0/src/Main.h 2016-04-14 21:56:22.449964486 -0700
@@ -35,10 +35,11 @@
- #include <cstdlib>
- #include <cmath>
- #include <cstdarg>
- #include <cassert>
- #include <exception>
-+#include <cerrno>
-
- #include <ctime>
- #include <sys/stat.h>
- #include <sys/types.h>
- #include <sys/timeb.h>
+ #include <cstdlib>\r
+ #include <cmath>\r
+ #include <cstdarg>\r
+ #include <cassert>\r
+ #include <exception>\r
++#include <cerrno>\r
+ \r
+ #include <ctime>\r
+ #include <sys/stat.h>\r
+ #include <sys/types.h>\r
+ #include <sys/timeb.h>\r
@@ -84,12 +85,10 @@
-
- // --- version
- #include "Config.h"
-
- // --- global game defines
--#define ART_FILE "graphics/gfxdata.kdf"
--#define BINDINGS_FILE "bindings.xml"
- #define LOAD_OK (-1)
- #define LOAD_FAILED (0)
- #define HRESULT(x) ( (x) == NULL : LOAD_OK ? LOAD_FAILED )
- #define NLPTR_SURF 0 //((SDL_Surface *)NULL)
-
+ \r
+ // --- version\r
+ #include "Config.h"\r
+ \r
+ // --- global game defines\r
+-#define ART_FILE "graphics/gfxdata.kdf"\r
+-#define BINDINGS_FILE "bindings.xml"\r
+ #define LOAD_OK (-1)\r
+ #define LOAD_FAILED (0)\r
+ #define HRESULT(x) ( (x) == NULL : LOAD_OK ? LOAD_FAILED )\r
+ #define NLPTR_SURF 0 //((SDL_Surface *)NULL)\r
+ \r
@@ -100,10 +99,16 @@
- #endif
-
- typedef std::string String;
- typedef std::ostringstream OutputSStream;
-
-+extern const char *sys_datadir;
-+extern const char *usr_cfgdir;
-+extern const char *usr_datadir;
-+
-+extern char *ART_FILE;
-+extern char *BINDINGS_FILE;
- //#include "pstdint.h" // portable types
- #include "Utils.h"
- #include "CKdf.h"
- #include "CSdl.h"
- #include "CSwv_module.h"
+ #endif\r
+ \r
+ typedef std::string String;\r
+ typedef std::ostringstream OutputSStream;\r
+ \r
++extern const char *sys_datadir;\r
++extern const char *usr_cfgdir;\r
++extern const char *usr_datadir;\r
++\r
++extern char *ART_FILE;\r
++extern char *BINDINGS_FILE;\r
+ //#include "pstdint.h" // portable types\r
+ #include "Utils.h"\r
+ #include "CKdf.h"\r
+ #include "CSdl.h"\r
+ #include "CSwv_module.h"\r
--- savagewheels-1.6.0/src/Utils.cpp.old 2016-04-15 19:28:21.757879157 -0700
+++ savagewheels-1.6.0/src/Utils.cpp 2016-04-15 19:28:28.478786779 -0700
@@ -261,11 +261,11 @@ inline String GetFormattedTime()
--- savagewheels-1.6.0/src/CGame.cpp.old 2016-04-15 20:43:37.479330001 -0700
+++ savagewheels-1.6.0/src/CGame.cpp 2016-04-15 21:04:48.044721904 -0700
@@ -116,10 +116,11 @@ void CGame::Close()
- ///////////////////////////////////////////////////////////////////////
- bool CGame::LoadGame()
- {
- char buf[255];
- int i = 0;
-+ String tmp (sys_datadir);
-
- AppendToLog( LOG_DASH );
- AppendToLog("Loading Game...");
-
- // global screen rect
+ ///////////////////////////////////////////////////////////////////////\r
+ bool CGame::LoadGame()\r
+ {\r
+ char buf[255];\r
+ int i = 0;\r
++ String tmp (sys_datadir);\r
+ \r
+ AppendToLog( LOG_DASH );\r
+ AppendToLog("Loading Game...");\r
+ \r
+ // global screen rect\r
@@ -161,11 +162,14 @@ bool CGame::LoadGame()
- srand( (unsigned)SDL_GetTicks() );
-
- UpdateSplash(); // UPDATESPLASH...
-
- // search for vehicles
-- if ( Swv.SearchAndLoad( "autos" ) != SWV_SUCCESS ) return false;
-+ tmp.resize(strlen(sys_datadir));
-+ tmp.append("/autos");
-+ if ( Swv.SearchAndLoad( tmp.c_str() ) != SWV_SUCCESS )
-+ return false;
-
- // check for vehicle number
- if ( Swv.GetVehicles() < 4 )
- {
- AppendToLog( "Not enough vehicles in the /auto dir!" );
+ srand( (unsigned)SDL_GetTicks() );\r
+ \r
+ UpdateSplash(); // UPDATESPLASH... \r
+ \r
+ // search for vehicles\r
+- if ( Swv.SearchAndLoad( "autos" ) != SWV_SUCCESS ) return false;\r
++ tmp.resize(strlen(sys_datadir));\r
++ tmp.append("/autos");\r
++ if ( Swv.SearchAndLoad( tmp.c_str() ) != SWV_SUCCESS )\r
++ return false;\r
+ \r
+ // check for vehicle number\r
+ if ( Swv.GetVehicles() < 4 ) \r
+ {\r
+ AppendToLog( "Not enough vehicles in the /auto dir!" );\r
--- savagewheels-1.6.0/src/CSdl.cpp.old 2016-04-16 16:00:56.600502348 -0700
+++ savagewheels-1.6.0/src/CSdl.cpp 2016-04-16 16:01:16.152226435 -0700
@@ -1298,13 +1298,10 @@
- return NULL;
- #else
-
- SDL_Surface *sdl_surf = NULL;
-
-- char filename_buf[255];
-- sprintf( filename_buf, "../%s", filename );
--
- if ( ( sdl_surf = SDL_LoadBMP( filename_buf )) == NULL )
- {
- LOG("...failed to load graphics from : " << filename_buf );
- return NULL;
- }
+ return NULL;\r
+ #else\r
+ \r
+ SDL_Surface *sdl_surf = NULL;\r
+ \r
+- char filename_buf[255];\r
+- sprintf( filename_buf, "../%s", filename );\r
+-\r
+ if ( ( sdl_surf = SDL_LoadBMP( filename_buf )) == NULL )\r
+ {\r
+ LOG("...failed to load graphics from : " << filename_buf );\r
+ return NULL;\r
+ }\r
--- savagewheels-1.6.0/src/CSounds.cpp.old 2016-04-16 16:06:43.887600441 -0700
+++ savagewheels-1.6.0/src/CSounds.cpp 2016-04-16 16:17:44.729332218 -0700
@@ -46,22 +46,39 @@
- // Name: Initialize()
- // Desc: Load all ingame sounds
- //////////////////////////////////////////////////////////////////////
- bool CSounds::Initialize( CSdl *pSdl )
- {
-- ASSERT( _sdl != NULL );
-+ ASSERT( pSdl != NULL );
- this->_sdl = pSdl;
-
- #if defined(WITH_FMOD) || defined(WITH_SDLMIXER)
-+ String tmp (sys_datadir);
-
--#define LOAD_SOUND( container, name, buffered ) if ( (sounds[container] = _sdl->LoadSound( name, buffered )) == -1 ) { \
-- LOG( "Failed to load " << name << " ! "); \
-- return false; }
-+#define LOAD_SOUND( container, name, buffered) \
-+ do { \
-+ tmp.append("/").append(name); \
-+ sounds[container] = \
-+ _sdl->LoadSound( tmp.c_str(), buffered ); \
-+ if ( sounds[container] == -1 ) { \
-+ LOG( "Failed to load " << name << " ! " ); \
-+ return false; \
-+ } \
-+ tmp.resize(strlen(sys_datadir)); \
-+ } while(0)
-
--#define LOAD_MUSIC( container, name ) if ( (music[container] = _sdl->LoadSound( name, false, true )) == -1 ) { \
-- LOG( "Failed to load music " << name << " ! "); \
-- return false; }
-+#define LOAD_MUSIC( container, name) \
-+ do { \
-+ tmp.append("/").append(name); \
-+ music[container] = \
-+ _sdl->LoadSound( tmp.c_str(), false, true ); \
-+ if ( music[container] == -1 ) { \
-+ LOG( "Failed to load music " << name << " ! " ); \
-+ return false; \
-+ } \
-+ tmp.resize(strlen(sys_datadir)); \
-+ } while(0)
-
- LOAD_SOUND( SND_CRASHLIGHT1, "sound/crash3.wav", true );
- LOAD_SOUND( SND_CRASHLIGHT2, "sound/crash2.wav", true );
- LOAD_SOUND( SND_CRASHLIGHT3, "sound/crash1.wav", true );
- LOAD_SOUND( SND_EXPLOSION1, "sound/exp.wav", true );
+ // Name: Initialize()\r
+ // Desc: Load all ingame sounds\r
+ //////////////////////////////////////////////////////////////////////\r
+ bool CSounds::Initialize( CSdl *pSdl )\r
+ {\r
+- ASSERT( _sdl != NULL );\r
++ ASSERT( pSdl != NULL );\r
+ this->_sdl = pSdl;\r
+ \r
+ #if defined(WITH_FMOD) || defined(WITH_SDLMIXER)\r
++ String tmp (sys_datadir);\r
+ \r
+-#define LOAD_SOUND( container, name, buffered ) if ( (sounds[container] = _sdl->LoadSound( name, buffered )) == -1 ) { \\r
+- LOG( "Failed to load " << name << " ! "); \\r
+- return false; }\r
++#define LOAD_SOUND( container, name, buffered) \\r
++ do { \\r
++ tmp.append("/").append(name); \\r
++ sounds[container] = \\r
++ _sdl->LoadSound( tmp.c_str(), buffered ); \\r
++ if ( sounds[container] == -1 ) { \\r
++ LOG( "Failed to load " << name << " ! " ); \\r
++ return false; \\r
++ } \\r
++ tmp.resize(strlen(sys_datadir)); \\r
++ } while(0)\r
+ \r
+-#define LOAD_MUSIC( container, name ) if ( (music[container] = _sdl->LoadSound( name, false, true )) == -1 ) { \\r
+- LOG( "Failed to load music " << name << " ! "); \\r
+- return false; }\r
++#define LOAD_MUSIC( container, name) \\r
++ do { \\r
++ tmp.append("/").append(name); \\r
++ music[container] = \\r
++ _sdl->LoadSound( tmp.c_str(), false, true ); \\r
++ if ( music[container] == -1 ) { \\r
++ LOG( "Failed to load music " << name << " ! " ); \\r
++ return false; \\r
++ } \\r
++ tmp.resize(strlen(sys_datadir)); \\r
++ } while(0)\r
+ \r
+ LOAD_SOUND( SND_CRASHLIGHT1, "sound/crash3.wav", true );\r
+ LOAD_SOUND( SND_CRASHLIGHT2, "sound/crash2.wav", true );\r
+ LOAD_SOUND( SND_CRASHLIGHT3, "sound/crash1.wav", true );\r
+ LOAD_SOUND( SND_EXPLOSION1, "sound/exp.wav", true );\r
--- savagewheels-1.6.0/src/CSwv_module.cpp.old 2016-04-16 20:58:04.366973388 -0700
+++ savagewheels-1.6.0/src/CSwv_module.cpp 2016-04-16 20:58:13.026851358 -0700
@@ -204,12 +204,10 @@ int CSwv_module::Load( char *filename, S
- // DBG("pos: " << swv_file->pfiles[i].pos
- // << " size (KB): " << swv_file->pfiles[i].length
- // << " name: " << swv_file->pfiles[i].filename);
- // }
-
-- // set module filename
-- sprintf( swv_file->filename, "%s", filename );
-
- if ( fp != NULL )
- fclose( fp );
-
- return SWV_SUCCESS;
+ // DBG("pos: " << swv_file->pfiles[i].pos\r
+ // << " size (KB): " << swv_file->pfiles[i].length\r
+ // << " name: " << swv_file->pfiles[i].filename);\r
+ // }\r
+ \r
+- // set module filename\r
+- sprintf( swv_file->filename, "%s", filename );\r
+ \r
+ if ( fp != NULL )\r
+ fclose( fp );\r
+ \r
+ return SWV_SUCCESS;\r
--- savagewheels-1.6.0/src/CSdl.cpp.old 2016-04-16 21:02:07.680544534 -0700
+++ savagewheels-1.6.0/src/CSdl.cpp 2016-04-16 21:06:59.400432874 -0700
-@@ -1336,12 +1336,25 @@ SDL_Surface* CSdl::LoadBitmap( const cha
- SDL_Surface* CSdl::LoadBitmap( const char *filename, int32_t file_offset, Uint32 file_size, Uint32 color_key, Uint16 alpha_value )
- {
- SDL_Surface *sdl_surf = NULL; // temp surface
- FILE *fp = NULL; // file pointer
- SDL_RWops *sdl_rw = NULL; // sdl_read_write_operations
-+ String tmp;
-
-- if ( ( fp = fopen( filename, "rb")) == NULL )
-+#ifdef LINUX_BUILD
-+ if ( filename[0] != '/' )
-+ {
-+ tmp = String(sys_datadir).append("/autos/").append(filename);
-+ }
-+ else
-+ {
-+ tmp = String(filename);
-+ }
-+#else
-+ tmp = String(filename);
-+#endif
-+ if ( ( fp = fopen( tmp.c_str(), "rb")) == NULL )
- {
- LOG("...failed to open file : " << filename );
- return NULL;
- }
-
+@@ -1336,12 +1339,25 @@ SDL_Surface* CSdl::LoadBitmap( const cha
+ SDL_Surface* CSdl::LoadBitmap( const char *filename, int32_t file_offset, Uint32 file_size, Uint32 color_key, Uint16 alpha_value )\r
+ {\r
+ SDL_Surface *sdl_surf = NULL; // temp surface\r
+ FILE *fp = NULL; // file pointer\r
+ SDL_RWops *sdl_rw = NULL; // sdl_read_write_operations\r
++ String tmp;\r
+ \r
+- if ( ( fp = fopen( filename, "rb")) == NULL ) \r
++#ifdef LINUX_BUILD\r
++ if ( filename[0] != '/' )\r
++ {\r
++ tmp = String(sys_datadir).append("/autos/").append(filename);\r
++ }\r
++ else\r
++ {\r
++ tmp = String(filename);\r
++ }\r
++#else\r
++ tmp = String(filename);\r
++#endif\r
++ if ( ( fp = fopen( tmp.c_str(), "rb")) == NULL ) \r
+ {\r
+ LOG("...failed to open file : " << filename );\r
+ return NULL;\r
+ }\r
+ \r
--- savagewheels-1.6.0/src/CMainMenu.cpp.old 2016-04-16 22:13:23.442523534 -0700
+++ savagewheels-1.6.0/src/CMainMenu.cpp 2016-04-16 22:13:17.701605381 -0700
@@ -1121,12 +1121,13 @@ void CMainMenu::SaveSettings()
- if ( _game == NULL )
- return;
-
- FILE *fp = NULL;
- char header[3] = { 'S', 'W', 'P' };
-+ String strPref(String(usr_cfgdir) + "/pref");
-
-- if ( ( fp = fopen( "pref", "wb" ) ) == NULL )
-+ if ( ( fp = fopen( strPref.c_str(), "wb" ) ) == NULL )
- {
- AppendToLog( "Error writing to /pref file !" );
- return;
- }
-
+ if ( _game == NULL )\r
+ return;\r
+ \r
+ FILE *fp = NULL;\r
+ char header[3] = { 'S', 'W', 'P' };\r
++ String strPref(String(usr_cfgdir) + "/pref");\r
+ \r
+- if ( ( fp = fopen( "pref", "wb" ) ) == NULL )\r
++ if ( ( fp = fopen( strPref.c_str(), "wb" ) ) == NULL )\r
+ {\r
+ AppendToLog( "Error writing to /pref file !" );\r
+ return;\r
+ }\r
+ \r
--- savagewheels-1.6.0/src/CMainMenu.cpp.old 2016-04-17 07:38:09.417653268 -0700
+++ savagewheels-1.6.0/src/CMainMenu.cpp 2016-04-17 07:38:24.277437113 -0700
-@@ -1167,12 +1168,13 @@ void CMainMenu::SaveSettings()
- void CMainMenu::LoadSettings()
- {
- FILE *fp = NULL;
- char header[3];
- bool success = true;
-+ String strPref(String(usr_cfgdir) + "/pref");
-
-- if ( ( fp = fopen( "pref", "rb" ) ) == NULL )
-+ if ( ( fp = fopen( strPref.c_str(), "wb" ) ) == NULL )
- {
- AppendToLog( "Error opening /pref file !" );
- success = false;
- }
-
+@@ -1168,12 +1167,13 @@ void CMainMenu::SaveSettings()
+ void CMainMenu::LoadSettings()\r
+ {\r
+ FILE *fp = NULL;\r
+ char header[3];\r
+ bool success = true;\r
++ String strPref(String(usr_cfgdir) + "/pref");\r
+ \r
+- if ( ( fp = fopen( "pref", "rb" ) ) == NULL )\r
++ if ( ( fp = fopen( strPref.c_str(), "wb" ) ) == NULL )\r
+ {\r
+ AppendToLog( "Error opening /pref file !" );\r
+ success = false;\r
+ }\r
+ \r