From c3eda56561e41dd0291bb48fa00b16c65b426552 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 20 Jun 2016 17:55:34 +0200 Subject: [PATCH] Move hashes over to msg_hash.c --- msg_hash.c | 12 ++++++++++++ msg_hash.h | 3 +++ tasks/task_database.c | 32 ++++++++++---------------------- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/msg_hash.c b/msg_hash.c index 93d7a58d3e..13beb6cd5d 100644 --- a/msg_hash.c +++ b/msg_hash.c @@ -181,6 +181,12 @@ uint32_t msg_hash_calculate(const char *s) #define MENU_VALUE_SLANG 0x105ce63aU #define MENU_VALUE_SLANGP 0x1bf9adeaU +#define HASH_EXTENSION_ZIP 0x0b88c7d8U +#define HASH_EXTENSION_CUE 0x0b886782U +#define HASH_EXTENSION_CUE_UPPERCASE 0x0b87db22U +#define HASH_EXTENSION_ISO 0x0b8880d0U +#define HASH_EXTENSION_ISO_UPPERCASE 0x0b87f470U + enum menu_file_type msg_hash_to_file_type(uint32_t hash) { switch (hash) @@ -282,6 +288,12 @@ enum menu_file_type msg_hash_to_file_type(uint32_t hash) case MENU_VALUE_FILE_BMP: return FILE_TYPE_BMP; #endif + case HASH_EXTENSION_CUE: + case HASH_EXTENSION_CUE_UPPERCASE: + return FILE_TYPE_CUE; + case HASH_EXTENSION_ISO: + case HASH_EXTENSION_ISO_UPPERCASE: + return FILE_TYPE_ISO; default: break; } diff --git a/msg_hash.h b/msg_hash.h index ab6ea35681..d2f9d4f441 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -103,6 +103,9 @@ enum menu_file_type FILE_TYPE_TGA, FILE_TYPE_BMP, + FILE_TYPE_CUE, + FILE_TYPE_ISO, + FILE_TYPE_LAST }; diff --git a/tasks/task_database.c b/tasks/task_database.c index e65999590d..80f2026ddb 100644 --- a/tasks/task_database.c +++ b/tasks/task_database.c @@ -34,12 +34,6 @@ #include "../runloop.h" #include "../verbosity.h" -#define HASH_EXTENSION_ZIP 0x0b88c7d8U -#define HASH_EXTENSION_CUE 0x0b886782U -#define HASH_EXTENSION_CUE_UPPERCASE 0x0b87db22U -#define HASH_EXTENSION_ISO 0x0b8880d0U -#define HASH_EXTENSION_ISO_UPPERCASE 0x0b87f470U - #ifndef COLLECTION_SIZE #define COLLECTION_SIZE 99999 #endif @@ -198,41 +192,35 @@ static int task_database_iterate_playlist( database_state_handle_t *db_state, database_info_handle_t *db, const char *name) { - uint32_t extension_hash = 0; char parent_dir[PATH_MAX_LENGTH] = {0}; path_parent_dir(parent_dir); - extension_hash = msg_hash_calculate(path_get_extension(name)); - - switch (extension_hash) + switch (msg_hash_to_file_type(msg_hash_calculate(path_get_extension(name)))) { - case HASH_EXTENSION_ZIP: + case FILE_TYPE_COMPRESSED: #ifdef HAVE_ZLIB db->type = DATABASE_TYPE_ITERATE_ZIP; memset(&db->state, 0, sizeof(file_archive_transfer_t)); db_state->zip_name[0] = '\0'; db->state.type = ZLIB_TRANSFER_INIT; return file_get_crc(db_state, name, &db_state->zip_crc); +#else + break; #endif - case HASH_EXTENSION_CUE: - case HASH_EXTENSION_CUE_UPPERCASE: + case FILE_TYPE_CUE: db_state->serial[0] = '\0'; cue_get_serial(db_state, db, name, db_state->serial); db->type = DATABASE_TYPE_SERIAL_LOOKUP; - return 1; - case HASH_EXTENSION_ISO: - case HASH_EXTENSION_ISO_UPPERCASE: + break; + case FILE_TYPE_ISO: db_state->serial[0] = '\0'; iso_get_serial(db_state, db, name, db_state->serial); db->type = DATABASE_TYPE_SERIAL_LOOKUP; - return 1; - default: - { - db->type = DATABASE_TYPE_CRC_LOOKUP; - return file_get_crc(db_state, name, &db_state->crc); - } break; + default: + db->type = DATABASE_TYPE_CRC_LOOKUP; + return file_get_crc(db_state, name, &db_state->crc); } return 1;