|
@@ -322,15 +322,15 @@ static void ini_free(IniFile *ini)
|
|
|
pool_free(&ini->pool);
|
|
|
}
|
|
|
|
|
|
struct SettingDesc {
|
|
|
const char *name;
|
|
|
int flags;
|
|
|
void *def;
|
|
|
const void *def;
|
|
|
void *ptr;
|
|
|
void *b;
|
|
|
const void *b;
|
|
|
|
|
|
};
|
|
|
|
|
|
static int lookup_oneofmany(const char *many, const char *one, int onelen)
|
|
|
{
|
|
|
const char *s;
|
|
@@ -490,13 +490,13 @@ static void make_manyofmany(char *buf, c
|
|
|
}
|
|
|
if (*many == '|') many++;
|
|
|
} while (++i, x>>=1);
|
|
|
*buf = 0;
|
|
|
}
|
|
|
|
|
|
static void *string_to_val(const SettingDesc *desc, const char *str)
|
|
|
static const void *string_to_val(const SettingDesc *desc, const char *str)
|
|
|
{
|
|
|
unsigned long val;
|
|
|
char *end;
|
|
|
|
|
|
switch(desc->flags & 0xF) {
|
|
|
case SDT_INTX:
|
|
@@ -529,17 +529,17 @@ static void *string_to_val(const Setting
|
|
|
return (void*)str;
|
|
|
}
|
|
|
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
static void load_setting_desc(IniFile *ini, const SettingDesc *desc, void *grpname, void *base)
|
|
|
static void load_setting_desc(IniFile *ini, const SettingDesc *desc, const void *grpname, void *base)
|
|
|
{
|
|
|
IniGroup *group_def = ini_getgroup(ini, grpname, -1), *group;
|
|
|
IniItem *item;
|
|
|
void *p;
|
|
|
const void *p;
|
|
|
void *ptr;
|
|
|
|
|
|
for (;desc->name;desc++) {
|
|
|
// group override?
|
|
|
const char *s = strchr(desc->name, '.');
|
|
|
if (s) {
|
|
@@ -600,17 +600,18 @@ static void load_setting_desc(IniFile *i
|
|
|
default:
|
|
|
NOT_REACHED();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
static void save_setting_desc(IniFile *ini, const SettingDesc *desc, void *grpname, void *base)
|
|
|
static void save_setting_desc(IniFile *ini, const SettingDesc *desc, const void *grpname, void *base)
|
|
|
{
|
|
|
IniGroup *group_def = NULL, *group;
|
|
|
IniItem *item;
|
|
|
void *p, *ptr;
|
|
|
const void *p;
|
|
|
void *ptr;
|
|
|
int i = 0;
|
|
|
char buf[512]; // setting buffer
|
|
|
const char *s;
|
|
|
|
|
|
for (;desc->name;desc++) {
|
|
|
if (desc->flags & SDT_NOSAVE)
|
|
@@ -880,13 +881,13 @@ static const SettingDesc patch_settings[
|
|
|
|
|
|
{"drag_signals_density",SDT_UINT8, (void*)4, (void*)offsetof(Patches, drag_signals_density), NULL},
|
|
|
|
|
|
{NULL, 0, NULL, NULL, NULL}
|
|
|
};
|
|
|
|
|
|
typedef void SettingDescProc(IniFile *ini, const SettingDesc *desc, void *grpname, void *base);
|
|
|
typedef void SettingDescProc(IniFile *ini, const SettingDesc *desc, const void *grpname, void *base);
|
|
|
|
|
|
static void HandleSettingDescs(IniFile *ini, SettingDescProc *proc)
|
|
|
{
|
|
|
proc(ini, misc_settings, "misc", NULL);
|
|
|
proc(ini, win32_settings, "win32", NULL);
|
|
|
proc(ini, network_settings, "network", NULL);
|