From e9cf351c6755c9420fe12513a8b60041fea25092 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 3 Jun 2016 06:43:11 +0200 Subject: [PATCH] Move settings around for User Interface - (config_file) Try to get rid of forward declarations --- libretro-common/file/config_file.c | 240 +++++++++++++++-------------- menu/menu_setting.c | 28 ++-- 2 files changed, 135 insertions(+), 133 deletions(-) diff --git a/libretro-common/file/config_file.c b/libretro-common/file/config_file.c index 4d3f7668fc..e84afa96e6 100644 --- a/libretro-common/file/config_file.c +++ b/libretro-common/file/config_file.c @@ -76,8 +76,8 @@ struct config_file struct config_include_list *includes; }; -static config_file_t *config_file_new_internal(const char *path, unsigned depth); -void config_file_free(config_file_t *conf); +static config_file_t *config_file_new_internal( + const char *path, unsigned depth); static char *getaline(FILE *file) { @@ -113,6 +113,45 @@ static char *getaline(FILE *file) return newline; } +static char *strip_comment(char *str) +{ + /* Remove everything after comment. + * Keep #s inside string literals. */ + char *strend = str + strlen(str); + bool cut_comment = true; + + while (!string_is_empty(str)) + { + char *comment = NULL; + char *literal = strchr(str, '\"'); + if (!literal) + literal = strend; + comment = (char*)strchr(str, '#'); + if (!comment) + comment = strend; + + if (cut_comment && literal < comment) + { + cut_comment = false; + str = literal + 1; + } + else if (!cut_comment && literal) + { + cut_comment = true; + str = literal + 1; + } + else if (comment) + { + *comment = '\0'; + str = comment; + } + else + str = strend; + } + + return str; +} + static char *extract_value(char *line, bool is_value) { char *save = NULL; @@ -153,6 +192,27 @@ static char *extract_value(char *line, bool is_value) return NULL; } +static void add_include_list(config_file_t *conf, const char *path) +{ + struct config_include_list *head = conf->includes; + struct config_include_list *node = (struct config_include_list*)calloc(1, sizeof(*node)); + + if (!node) + return; + + node->path = strdup(path); + + if (head) + { + while (head->next) + head = head->next; + + head->next = node; + } + else + conf->includes = node; +} + static void set_list_readonly(struct config_entry_list *list) { while (list) @@ -196,27 +256,6 @@ static void add_child_list(config_file_t *parent, config_file_t *child) parent->tail = NULL; } -static void add_include_list(config_file_t *conf, const char *path) -{ - struct config_include_list *head = conf->includes; - struct config_include_list *node = (struct config_include_list*)calloc(1, sizeof(*node)); - - if (!node) - return; - - node->path = strdup(path); - - if (head) - { - while (head->next) - head = head->next; - - head->next = node; - } - else - conf->includes = node; -} - static void add_sub_conf(config_file_t *conf, char *line) { char real_path[PATH_MAX_LENGTH] = {0}; @@ -259,45 +298,6 @@ static void add_sub_conf(config_file_t *conf, char *line) free(path); } -static char *strip_comment(char *str) -{ - /* Remove everything after comment. - * Keep #s inside string literals. */ - char *strend = str + strlen(str); - bool cut_comment = true; - - while (!string_is_empty(str)) - { - char *comment = NULL; - char *literal = strchr(str, '\"'); - if (!literal) - literal = strend; - comment = (char*)strchr(str, '#'); - if (!comment) - comment = strend; - - if (cut_comment && literal < comment) - { - cut_comment = false; - str = literal + 1; - } - else if (!cut_comment && literal) - { - cut_comment = true; - str = literal + 1; - } - else if (comment) - { - *comment = '\0'; - str = comment; - } - else - str = strend; - } - - return str; -} - static bool parse_line(config_file_t *conf, struct config_entry_list *list, char *line) { @@ -371,23 +371,6 @@ static bool parse_line(config_file_t *conf, return true; } -bool config_append_file(config_file_t *conf, const char *path) -{ - config_file_t *new_conf = config_file_new(path); - if (!new_conf) - return false; - - if (new_conf->tail) - { - new_conf->tail->next = conf->entries; - conf->entries = new_conf->entries; /* Pilfer. */ - new_conf->entries = NULL; - } - - config_file_free(new_conf); - return true; -} - static config_file_t *config_file_new_internal( const char *path, unsigned depth) { @@ -464,6 +447,65 @@ error: return NULL; } +void config_file_free(config_file_t *conf) +{ + struct config_include_list *inc_tmp = NULL; + struct config_entry_list *tmp = NULL; + if (!conf) + return; + + tmp = conf->entries; + while (tmp) + { + struct config_entry_list *hold = NULL; + if (tmp->key) + free(tmp->key); + if (tmp->value) + free(tmp->value); + + tmp->value = NULL; + tmp->key = NULL; + + hold = tmp; + tmp = tmp->next; + + if (hold) + free(hold); + } + + inc_tmp = (struct config_include_list*)conf->includes; + while (inc_tmp) + { + struct config_include_list *hold = NULL; + free(inc_tmp->path); + hold = (struct config_include_list*)inc_tmp; + inc_tmp = inc_tmp->next; + free(hold); + } + + if (conf->path) + free(conf->path); + free(conf); +} + +bool config_append_file(config_file_t *conf, const char *path) +{ + config_file_t *new_conf = config_file_new(path); + if (!new_conf) + return false; + + if (new_conf->tail) + { + new_conf->tail->next = conf->entries; + conf->entries = new_conf->entries; /* Pilfer. */ + new_conf->entries = NULL; + } + + config_file_free(new_conf); + return true; +} + + config_file_t *config_file_new_from_string(const char *from_string) { size_t i; @@ -522,46 +564,6 @@ config_file_t *config_file_new(const char *path) return config_file_new_internal(path, 0); } -void config_file_free(config_file_t *conf) -{ - struct config_include_list *inc_tmp = NULL; - struct config_entry_list *tmp = NULL; - if (!conf) - return; - - tmp = conf->entries; - while (tmp) - { - struct config_entry_list *hold = NULL; - if (tmp->key) - free(tmp->key); - if (tmp->value) - free(tmp->value); - - tmp->value = NULL; - tmp->key = NULL; - - hold = tmp; - tmp = tmp->next; - - if (hold) - free(hold); - } - - inc_tmp = (struct config_include_list*)conf->includes; - while (inc_tmp) - { - struct config_include_list *hold = NULL; - free(inc_tmp->path); - hold = (struct config_include_list*)inc_tmp; - inc_tmp = inc_tmp->next; - free(hold); - } - - if (conf->path) - free(conf->path); - free(conf); -} static struct config_entry_list *config_get_entry(const config_file_t *conf, const char *key, struct config_entry_list **prev) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 75a8423ffd..b19b8007ce 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -6225,6 +6225,20 @@ static bool setting_append_list( START_SUB_GROUP(list, list_info, "State", &group_info, &subgroup_info, parent_group); + CONFIG_BOOL( + list, list_info, + &settings->pause_nonactive, + menu_hash_to_str(MENU_LABEL_PAUSE_NONACTIVE), + menu_hash_to_str(MENU_LABEL_VALUE_PAUSE_NONACTIVE), + pause_nonactive, + menu_hash_to_str(MENU_VALUE_OFF), + menu_hash_to_str(MENU_VALUE_ON), + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + CONFIG_BOOL( list, list_info, &settings->video.disable_composition, @@ -6241,20 +6255,6 @@ static bool setting_append_list( menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_REINIT); settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO); - CONFIG_BOOL( - list, list_info, - &settings->pause_nonactive, - menu_hash_to_str(MENU_LABEL_PAUSE_NONACTIVE), - menu_hash_to_str(MENU_LABEL_VALUE_PAUSE_NONACTIVE), - pause_nonactive, - menu_hash_to_str(MENU_VALUE_OFF), - menu_hash_to_str(MENU_VALUE_ON), - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); - CONFIG_BOOL( list, list_info, &settings->ui.companion_enable,