From 30aaa265e0d8a541ad42ff3d372109b3ac4ab1df Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 22 May 2015 23:57:48 +0200 Subject: [PATCH] Create filt_list_{set/get}_alt2_at_offset --- libretro-common/file/file_list.c | 38 ++++++++++++++++++++++++ libretro-common/include/file/file_list.h | 7 +++++ 2 files changed, 45 insertions(+) diff --git a/libretro-common/file/file_list.c b/libretro-common/file/file_list.c index 2a59da0df4..6b604e444b 100644 --- a/libretro-common/file/file_list.c +++ b/libretro-common/file/file_list.c @@ -45,6 +45,7 @@ void file_list_push(file_list_t *list, list->list[list->size].label = NULL; list->list[list->size].path = NULL; list->list[list->size].alt = NULL; + list->list[list->size].alt2 = NULL; list->list[list->size].type = type; list->list[list->size].directory_ptr = directory_ptr; @@ -111,6 +112,10 @@ void file_list_free(file_list_t *list) if (list->list[i].alt) free(list->list[i].alt); list->list[i].alt = NULL; + + if (list->list[i].alt2) + free(list->list[i].alt2); + list->list[i].alt2 = NULL; } if (list->list) free(list->list); @@ -139,6 +144,10 @@ void file_list_clear(file_list_t *list) if (list->list[i].alt) free(list->list[i].alt); list->list[i].alt = NULL; + + if (list->list[i].alt2) + free(list->list[i].alt2); + list->list[i].alt2 = NULL; } list->size = 0; @@ -165,6 +174,7 @@ void file_list_copy(file_list_t *list, file_list_t *list_old) list_old->list[i].path = NULL; list_old->list[i].label = NULL; list_old->list[i].alt = NULL; + list_old->list[i].alt2 = NULL; list_old->list[i].type = list->list[i].type; list_old->list[i].directory_ptr = list->list[i].directory_ptr; list_old->list[i].userdata = list->list[i].userdata; @@ -176,6 +186,8 @@ void file_list_copy(file_list_t *list, file_list_t *list_old) list_old->list[i].label = strdup(list->list[i].label); if (list->list[i].alt) list_old->list[i].alt = strdup(list->list[i].alt); + if (list->list[i].alt2) + list_old->list[i].alt2 = strdup(list->list[i].alt2); } } @@ -188,6 +200,7 @@ void file_list_set_label_at_offset(file_list_t *list, size_t idx, if (list->list[idx].label) free(list->list[idx].label); list->list[idx].alt = NULL; + list->list[idx].alt2 = NULL; if (label) list->list[idx].label = strdup(label); @@ -218,6 +231,31 @@ void file_list_set_alt_at_offset(file_list_t *list, size_t idx, list->list[idx].alt = strdup(alt); } +void file_list_set_alt2_at_offset(file_list_t *list, size_t idx, + const char *alt) +{ + if (!list) + return; + + if (list->list[idx].alt2) + free(list->list[idx].alt2); + list->list[idx].alt2 = NULL; + + if (alt) + list->list[idx].alt2 = strdup(alt); +} + +void file_list_get_alt2_at_offset(const file_list_t *list, size_t idx, + const char **alt) +{ + if (!list) + return; + + if (alt) + *alt = list->list[idx].alt2 ? + list->list[idx].alt2 : list->list[idx].path; +} + void file_list_get_alt_at_offset(const file_list_t *list, size_t idx, const char **alt) { diff --git a/libretro-common/include/file/file_list.h b/libretro-common/include/file/file_list.h index 95983f3e91..a5c0d95b94 100644 --- a/libretro-common/include/file/file_list.h +++ b/libretro-common/include/file/file_list.h @@ -34,6 +34,7 @@ struct item_file char *path; char *label; char *alt; + char *alt2; unsigned type; size_t directory_ptr; void *userdata; @@ -86,9 +87,15 @@ void file_list_set_label_at_offset(file_list_t *list, size_t index, void file_list_get_label_at_offset(const file_list_t *list, size_t index, const char **label); +void file_list_set_alt2_at_offset(file_list_t *list, size_t index, + const char *alt); + void file_list_set_alt_at_offset(file_list_t *list, size_t index, const char *alt); +void file_list_get_alt2_at_offset(const file_list_t *list, size_t index, + const char **alt); + void file_list_get_alt_at_offset(const file_list_t *list, size_t index, const char **alt);