summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--os2.c4
-rw-r--r--ttd.c13
-rw-r--r--unix.c5
-rw-r--r--win32.c4
4 files changed, 20 insertions, 6 deletions
diff --git a/os2.c b/os2.c
index 7667eb89a..40ccd66af 100644
--- a/os2.c
+++ b/os2.c
@@ -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
diff --git a/ttd.c b/ttd.c
index b551b916b..c1a4f8956 100644
--- a/ttd.c
+++ b/ttd.c
@@ -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();
diff --git a/unix.c b/unix.c
index 5c5b4db8e..6ff092b64 100644
--- a/unix.c
+++ b/unix.c
@@ -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);
diff --git a/win32.c b/win32.c
index e9b636519..849c66e08 100644
--- a/win32.c
+++ b/win32.c
@@ -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);