save only modified values when saving remaps

This commit is contained in:
radius 2016-02-09 23:39:16 -05:00
parent 82991afb36
commit 80845f1cd6
3 changed files with 32 additions and 2 deletions

View File

@ -161,7 +161,22 @@ bool input_remapping_save_file(const char *path)
{
fill_pathname_join_delim(key_ident[j], buf,
key_strings[j], '_', sizeof(key_ident[j]));
config_set_int(conf, key_ident[j], settings->input.remap_ids[i][j]);
/* only save values that have been modified */
if(j < RARCH_FIRST_CUSTOM_BIND)
{
if(settings->input.remap_ids[i][j] != j)
config_set_int(conf, key_ident[j], settings->input.remap_ids[i][j]);
else
config_unset(conf,key_ident[j]);
}
else
{
if(settings->input.remap_ids[i][j] != j - RARCH_FIRST_CUSTOM_BIND)
config_set_int(conf, key_ident[j], settings->input.remap_ids[i][j]);
else
config_unset(conf,key_ident[j]);
}
}
for (i = 0; i < MAX_USERS; i++)

View File

@ -773,6 +773,20 @@ void config_set_string(config_file_t *conf, const char *key, const char *val)
conf->entries = entry;
}
void config_unset(config_file_t *conf, const char *key)
{
struct config_entry_list *last = conf->entries;
struct config_entry_list *entry = config_get_entry(conf, key, &last);
if (!entry)
return;
entry->key = NULL;
entry->value = NULL;
free(entry->key);
free(entry->value);
}
void config_set_path(config_file_t *conf, const char *entry, const char *val)
{
#if defined(RARCH_CONSOLE)
@ -873,7 +887,7 @@ void config_file_dump(config_file_t *conf, FILE *file)
list = (struct config_entry_list*)conf->entries;
while (list)
{
if (!list->readonly)
if (!list->readonly && list->key)
fprintf(file, "%s = \"%s\"\n", list->key, list->value);
list = list->next;
}

View File

@ -147,6 +147,7 @@ void config_set_hex(config_file_t *conf, const char *entry, unsigned val);
void config_set_uint64(config_file_t *conf, const char *entry, uint64_t val);
void config_set_char(config_file_t *conf, const char *entry, char val);
void config_set_string(config_file_t *conf, const char *entry, const char *val);
void config_unset(config_file_t *conf, const char *key);
void config_set_path(config_file_t *conf, const char *entry, const char *val);
void config_set_bool(config_file_t *conf, const char *entry, bool val);