summaryrefslogtreecommitdiff
path: root/src/settings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/settings.cpp')
-rw-r--r--src/settings.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/settings.cpp b/src/settings.cpp
index 2debd509f..46dfd72d9 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -1753,6 +1753,36 @@ static void NewsDisplaySaveConfig(IniFile *ini, const char *grpname, uint news_d
}
}
+/**
+ * Save the version of OpenTTD to the ini file.
+ * @param ini the ini to write to
+ */
+static void SaveVersionInConfig(IniFile *ini)
+{
+ extern const char _openttd_revision[];
+ extern uint32 _openttd_newgrf_version;
+
+ IniGroup *group = ini_getgroup(ini, "version", -1);
+
+ if (group == NULL) return;
+ group->item = NULL;
+ IniItem **item = &group->item;
+
+ char version[9];
+ snprintf(version, lengthof(version), "%08X", _openttd_newgrf_version);
+
+ const char *versions[][2] = {
+ { "version_string", _openttd_revision },
+ { "version_number", version }
+ };
+
+ for (uint i = 0; i < lengthof(versions); i++) {
+ *item = ini_item_alloc(group, versions[i][0], strlen(versions[i][0]));
+ (*item)->value = (char*)pool_strdup(&ini->pool, versions[i][1], strlen(versions[i][1]));
+ item = &(*item)->next;
+ }
+}
+
/* Save a GRF configuration to the given group name */
static void GRFSaveConfig(IniFile *ini, const char *grpname, const GRFConfig *list)
{
@@ -1817,6 +1847,7 @@ void SaveToConfig()
GRFSaveConfig(ini, "newgrf", _grfconfig_newgame);
GRFSaveConfig(ini, "newgrf-static", _grfconfig_static);
NewsDisplaySaveConfig(ini, "news_display", _news_display_opt);
+ SaveVersionInConfig(ini);
ini_save(_config_file, ini);
ini_free(ini);
}