diff options
-rw-r--r-- | os2.c | 4 | ||||
-rw-r--r-- | ttd.c | 13 | ||||
-rw-r--r-- | unix.c | 5 | ||||
-rw-r--r-- | win32.c | 4 |
4 files changed, 20 insertions, 6 deletions
@@ -582,7 +582,9 @@ void DeterminePaths(void) _path.scenario_dir = str_fmt("%sscenario", _path.personal_dir); _path.gm_dir = str_fmt("%sgm\\", _path.game_data_dir); _path.data_dir = str_fmt("%sdata\\", _path.game_data_dir); - _config_file = str_fmt("%sopenttd.cfg", _path.personal_dir); + + if (_config_file == NULL) + _config_file = str_fmt("%sopenttd.cfg", _path.personal_dir); #if defined CUSTOM_LANG_DIR // sets the search path for lng files to the custom one @@ -302,7 +302,8 @@ static void showhelp(void) " -f = Fork into the background (dedicated only)\n" #endif " -i = Force to use the DOS palette (use this if you see a lot of pink)\n" - " -p #player = Player as #player (deprecated) (network only)\n", + " -p #player = Player as #player (deprecated) (network only)\n" + " -c config_file = Use 'config_file' instead of 'openttd.cfg'\n", lastof(buf) ); @@ -451,6 +452,8 @@ static void UnInitializeGame(void) { UnInitWindowSystem(); UnInitNewgrEngines(); + + free(_config_file); } static void LoadIntroGame(void) @@ -509,15 +512,16 @@ int ttd_main(int argc, char* argv[]) _switch_mode_errorstr = INVALID_STRING_ID; _dedicated_forks = false; dedicated = false; + _config_file = NULL; // The last param of the following function means this: // a letter means: it accepts that param (e.g.: -h) // a ':' behind it means: it need a param (e.g.: -m<driver>) // a '::' behind it means: it can optional have a param (e.g.: -d<debug>) #if !defined(__MORPHOS__) && !defined(__AMIGA__) && !defined(WIN32) - optformat = "m:s:v:hDfn::l:eit:d::r:g::G:p:"; + optformat = "m:s:v:hDfn::l:eit:d::r:g::G:p:c:"; #else - optformat = "m:s:v:hDn::l:eit:d::r:g::G:p:"; // no fork option + optformat = "m:s:v:hDn::l:eit:d::r:g::G:p:c:"; // no fork option #endif MyGetOptInit(&mgo, argc-1, argv+1, optformat); @@ -575,6 +579,9 @@ int ttd_main(int argc, char* argv[]) if (IS_INT_INSIDE(i, 1, MAX_PLAYERS)) _network_playas = i; break; } + case 'c': + _config_file = strdup(mgo.opt); + break; case -2: case 'h': showhelp(); @@ -515,7 +515,10 @@ void DeterminePaths(void) _path.scenario_dir = str_fmt("%sscenario", _path.personal_dir); _path.gm_dir = str_fmt("%sgm/", _path.game_data_dir); _path.data_dir = str_fmt("%sdata/", _path.game_data_dir); - _config_file = str_fmt("%sopenttd.cfg", _path.personal_dir); + + if (_config_file == NULL) + _config_file = str_fmt("%sopenttd.cfg", _path.personal_dir); + _highscore_file = str_fmt("%shs.dat", _path.personal_dir); _log_file = str_fmt("%sopenttd.log", _path.personal_dir); @@ -2131,7 +2131,9 @@ void DeterminePaths(void) _path.data_dir = str_fmt("%sdata\\", cfg); _path.lang_dir = str_fmt("%slang\\", cfg); - _config_file = str_fmt("%sopenttd.cfg", _path.personal_dir); + if (_config_file == NULL) + _config_file = str_fmt("%sopenttd.cfg", _path.personal_dir); + _highscore_file = str_fmt("%shs.dat", _path.personal_dir); _log_file = str_fmt("%sopenttd.log", _path.personal_dir); |