file_archive_get_file_list_cb - remove string_list usage

This commit is contained in:
libretroadmin 2024-06-15 15:35:26 +02:00
parent 1ef4be2280
commit 29c89a46f1
2 changed files with 32 additions and 26 deletions

View File

@ -55,37 +55,43 @@ static int file_archive_get_file_list_cb(
if (valid_exts) if (valid_exts)
{ {
size_t path_len = strlen(path); char *tok, *save;
/* Checks if this entry is a directory or a file. */ bool found_ext = false;
char last_char = path[path_len - 1]; char *valid_exts_cpy = NULL;
struct string_list ext_list = {0}; size_t path_len = 0;
char last_char = 0;
const char *file_ext = path_get_extension(path);
/* Skip if directory. */ if (!file_ext)
if (last_char == '/' || last_char == '\\' )
return 1; return 1;
string_list_initialize(&ext_list); path_len = strlen(path);
if (string_split_noalloc(&ext_list, valid_exts, "|")) last_char = path[path_len - 1];
/* Checks if this entry is a directory or a file. */
/* Skip if directory. */
if (last_char == '/' || last_char == '\\')
return 1;
valid_exts_cpy = strdup(valid_exts);
tok = strtok_r(valid_exts_cpy, "|", &save);
while (tok)
{ {
const char *file_ext = path_get_extension(path); if (string_is_equal_noncase(tok, file_ext))
if (!file_ext)
{ {
string_list_deinitialize(&ext_list); found_ext = true;
return 1; break;
} }
tok = strtok_r(NULL, "|", &save);
if (!string_list_find_elem_prefix(&ext_list, ".", file_ext))
{
/* keep iterating */
string_list_deinitialize(&ext_list);
return -1;
}
attr.i = RARCH_COMPRESSED_FILE_IN_ARCHIVE;
} }
free(valid_exts_cpy);
string_list_deinitialize(&ext_list); /* keep iterating */
if (!found_ext)
return -1;
attr.i = RARCH_COMPRESSED_FILE_IN_ARCHIVE;
} }
return string_list_append(userdata->list, path, attr); return string_list_append(userdata->list, path, attr);