|
@@ -1617,25 +1617,25 @@ static uint NewsDisplayLoadConfig(IniFil
|
|
|
/* Load a GRF configuration from the given group name */
|
|
|
static GRFConfig *GRFLoadConfig(IniFile *ini, const char *grpname, bool is_static)
|
|
|
{
|
|
|
IniGroup *group = ini_getgroup(ini, grpname, -1);
|
|
|
IniItem *item;
|
|
|
GRFConfig *first = NULL;
|
|
|
GRFConfig **curr = &first;
|
|
|
|
|
|
if (group == NULL) return NULL;
|
|
|
|
|
|
for (item = group->item; item != NULL; item = item->next) {
|
|
|
GRFConfig *c = CallocT<GRFConfig>(1);
|
|
|
c->full_path = strdup(item->name);
|
|
|
c->filename = strdup(item->name);
|
|
|
|
|
|
/* Parse parameters */
|
|
|
if (*item->value != '\0') {
|
|
|
c->num_params = parse_intlist(item->value, (int*)c->param, lengthof(c->param));
|
|
|
if (c->num_params == (byte)-1) {
|
|
|
ShowInfoF("ini: error in array '%s'", item->name);
|
|
|
c->num_params = 0;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/* Check if item is valid */
|
|
|
if (!FillGRFDetails(c, is_static)) {
|
|
@@ -1694,25 +1694,25 @@ static void GRFSaveConfig(IniFile *ini,
|
|
|
IniGroup *group = ini_getgroup(ini, grpname, -1);
|
|
|
IniItem **item;
|
|
|
const GRFConfig *c;
|
|
|
|
|
|
if (group == NULL) return;
|
|
|
group->item = NULL;
|
|
|
item = &group->item;
|
|
|
|
|
|
for (c = list; c != NULL; c = c->next) {
|
|
|
char params[512];
|
|
|
GRFBuildParamList(params, c, lastof(params));
|
|
|
|
|
|
*item = ini_item_alloc(group, c->full_path, strlen(c->full_path));
|
|
|
*item = ini_item_alloc(group, c->filename, strlen(c->filename));
|
|
|
(*item)->value = (char*)pool_strdup(&ini->pool, params, strlen(params));
|
|
|
item = &(*item)->next;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/* Common handler for saving/loading variables to the configuration file */
|
|
|
static void HandleSettingDescs(IniFile *ini, SettingDescProc *proc, SettingDescProcList *proc_list)
|
|
|
{
|
|
|
proc(ini, (const SettingDesc*)_misc_settings, "misc", NULL);
|
|
|
proc(ini, (const SettingDesc*)_music_settings, "music", &msf);
|
|
|
#ifdef WIN32
|
|
|
proc(ini, (const SettingDesc*)_win32_settings, "win32", NULL);
|