src/settings.cpp
changeset 8747 d6c53cb184f3
parent 8737 4405e2e80db6
child 8763 81fadd257f67
equal deleted inserted replaced
8746:cbb81aadd0b7 8747:d6c53cb184f3
  1751 		(*item)->value = (char*)pool_strdup(&ini->pool, value, strlen(value));
  1751 		(*item)->value = (char*)pool_strdup(&ini->pool, value, strlen(value));
  1752 		item = &(*item)->next;
  1752 		item = &(*item)->next;
  1753 	}
  1753 	}
  1754 }
  1754 }
  1755 
  1755 
       
  1756 /**
       
  1757  * Save the version of OpenTTD to the ini file.
       
  1758  * @param ini the ini to write to
       
  1759  */
       
  1760 static void SaveVersionInConfig(IniFile *ini)
       
  1761 {
       
  1762 	extern const char _openttd_revision[];
       
  1763 	extern uint32 _openttd_newgrf_version;
       
  1764 
       
  1765 	IniGroup *group = ini_getgroup(ini, "version", -1);
       
  1766 
       
  1767 	if (group == NULL) return;
       
  1768 	group->item = NULL;
       
  1769 	IniItem **item = &group->item;
       
  1770 
       
  1771 	char version[9];
       
  1772 	snprintf(version, lengthof(version), "%08X", _openttd_newgrf_version);
       
  1773 
       
  1774 	const char *versions[][2] = {
       
  1775 		{ "version_string", _openttd_revision },
       
  1776 		{ "version_number", version }
       
  1777 	};
       
  1778 
       
  1779 	for (uint i = 0; i < lengthof(versions); i++) {
       
  1780 		*item = ini_item_alloc(group, versions[i][0], strlen(versions[i][0]));
       
  1781 		(*item)->value = (char*)pool_strdup(&ini->pool, versions[i][1], strlen(versions[i][1]));
       
  1782 		item = &(*item)->next;
       
  1783 	}
       
  1784 }
       
  1785 
  1756 /* Save a GRF configuration to the given group name */
  1786 /* Save a GRF configuration to the given group name */
  1757 static void GRFSaveConfig(IniFile *ini, const char *grpname, const GRFConfig *list)
  1787 static void GRFSaveConfig(IniFile *ini, const char *grpname, const GRFConfig *list)
  1758 {
  1788 {
  1759 	IniGroup *group = ini_getgroup(ini, grpname, -1);
  1789 	IniGroup *group = ini_getgroup(ini, grpname, -1);
  1760 	IniItem **item;
  1790 	IniItem **item;
  1815 	IniFile *ini = ini_load(_config_file);
  1845 	IniFile *ini = ini_load(_config_file);
  1816 	HandleSettingDescs(ini, ini_save_settings, ini_save_setting_list);
  1846 	HandleSettingDescs(ini, ini_save_settings, ini_save_setting_list);
  1817 	GRFSaveConfig(ini, "newgrf", _grfconfig_newgame);
  1847 	GRFSaveConfig(ini, "newgrf", _grfconfig_newgame);
  1818 	GRFSaveConfig(ini, "newgrf-static", _grfconfig_static);
  1848 	GRFSaveConfig(ini, "newgrf-static", _grfconfig_static);
  1819 	NewsDisplaySaveConfig(ini, "news_display", _news_display_opt);
  1849 	NewsDisplaySaveConfig(ini, "news_display", _news_display_opt);
       
  1850 	SaveVersionInConfig(ini);
  1820 	ini_save(_config_file, ini);
  1851 	ini_save(_config_file, ini);
  1821 	ini_free(ini);
  1852 	ini_free(ini);
  1822 }
  1853 }
  1823 
  1854 
  1824 static const SettingDesc *GetSettingDescription(uint index)
  1855 static const SettingDesc *GetSettingDescription(uint index)