mirror of
https://github.com/libretro/RetroArch
synced 2025-03-03 22:14:17 +00:00
Merge pull request #11540 from jdgleaver/config-include-override
(config_file) Enable saving of changed parameters when '#include' directives are used
This commit is contained in:
commit
8401e898cc
@ -1053,11 +1053,7 @@ void config_set_string(config_file_t *conf, const char *key, const char *val)
|
|||||||
if (entry)
|
if (entry)
|
||||||
{
|
{
|
||||||
/* An entry corresponding to 'key' already exists
|
/* An entry corresponding to 'key' already exists
|
||||||
* > Check if it's read only */
|
* > Check whether value is currently set */
|
||||||
if (entry->readonly)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Check whether value is currently set */
|
|
||||||
if (entry->value)
|
if (entry->value)
|
||||||
{
|
{
|
||||||
/* Do nothing if value is unchanged */
|
/* Do nothing if value is unchanged */
|
||||||
@ -1069,8 +1065,11 @@ void config_set_string(config_file_t *conf, const char *key, const char *val)
|
|||||||
free(entry->value);
|
free(entry->value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update value */
|
/* Update value
|
||||||
|
* > Note that once a value is set, it
|
||||||
|
* is no longer considered 'read only' */
|
||||||
entry->value = strdup(val);
|
entry->value = strdup(val);
|
||||||
|
entry->readonly = false;
|
||||||
conf->modified = true;
|
conf->modified = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1245,14 +1244,6 @@ void config_file_dump_orbis(config_file_t *conf, int fd)
|
|||||||
{
|
{
|
||||||
struct config_entry_list *list = NULL;
|
struct config_entry_list *list = NULL;
|
||||||
struct config_include_list *includes = conf->includes;
|
struct config_include_list *includes = conf->includes;
|
||||||
while (includes)
|
|
||||||
{
|
|
||||||
char cad[256];
|
|
||||||
snprintf(cad, sizeof(cad),
|
|
||||||
"#include %s\n", includes->path);
|
|
||||||
orbisWrite(fd, cad, strlen(cad));
|
|
||||||
includes = includes->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
list = config_file_merge_sort_linked_list(
|
list = config_file_merge_sort_linked_list(
|
||||||
(struct config_entry_list*)conf->entries,
|
(struct config_entry_list*)conf->entries,
|
||||||
@ -1270,6 +1261,21 @@ void config_file_dump_orbis(config_file_t *conf, int fd)
|
|||||||
}
|
}
|
||||||
list = list->next;
|
list = list->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Config files are read from the top down - if
|
||||||
|
* duplicate entries are found then the topmost
|
||||||
|
* one in the list takes precedence. This means
|
||||||
|
* '#include' directives must go *after* individual
|
||||||
|
* config entries, otherwise they will override
|
||||||
|
* any custom-set values */
|
||||||
|
while (includes)
|
||||||
|
{
|
||||||
|
char cad[256];
|
||||||
|
snprintf(cad, sizeof(cad),
|
||||||
|
"#include %s\n", includes->path);
|
||||||
|
orbisWrite(fd, cad, strlen(cad));
|
||||||
|
includes = includes->next;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1278,12 +1284,6 @@ void config_file_dump(config_file_t *conf, FILE *file, bool sort)
|
|||||||
struct config_entry_list *list = NULL;
|
struct config_entry_list *list = NULL;
|
||||||
struct config_include_list *includes = conf->includes;
|
struct config_include_list *includes = conf->includes;
|
||||||
|
|
||||||
while (includes)
|
|
||||||
{
|
|
||||||
fprintf(file, "#include \"%s\"\n", includes->path);
|
|
||||||
includes = includes->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sort)
|
if (sort)
|
||||||
list = config_file_merge_sort_linked_list(
|
list = config_file_merge_sort_linked_list(
|
||||||
(struct config_entry_list*)conf->entries,
|
(struct config_entry_list*)conf->entries,
|
||||||
@ -1299,6 +1299,18 @@ void config_file_dump(config_file_t *conf, FILE *file, bool sort)
|
|||||||
fprintf(file, "%s = \"%s\"\n", list->key, list->value);
|
fprintf(file, "%s = \"%s\"\n", list->key, list->value);
|
||||||
list = list->next;
|
list = list->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Config files are read from the top down - if
|
||||||
|
* duplicate entries are found then the topmost
|
||||||
|
* one in the list takes precedence. This means
|
||||||
|
* '#include' directives must go *after* individual
|
||||||
|
* config entries, otherwise they will override
|
||||||
|
* any custom-set values */
|
||||||
|
while (includes)
|
||||||
|
{
|
||||||
|
fprintf(file, "#include \"%s\"\n", includes->path);
|
||||||
|
includes = includes->next;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool config_entry_exists(config_file_t *conf, const char *entry)
|
bool config_entry_exists(config_file_t *conf, const char *entry)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user