From 350a33a4ae8d5b4caff2fd82ed95aa9d93b215de Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 25 May 2015 18:46:16 +0200 Subject: [PATCH] Start implementing database_info_list_iterate_found_match --- playlist.c | 2 +- playlist.h | 2 ++ tasks/task_database.c | 53 ++++++++++++++++++++++++++++++++++++++----- 3 files changed, 50 insertions(+), 7 deletions(-) diff --git a/playlist.c b/playlist.c index 2c21f6efa2..35d53eb3a5 100644 --- a/playlist.c +++ b/playlist.c @@ -170,7 +170,7 @@ void content_playlist_push(content_playlist_t *playlist, playlist->size++; } -static void content_playlist_write_file(content_playlist_t *playlist) +void content_playlist_write_file(content_playlist_t *playlist) { size_t i; FILE *file = NULL; diff --git a/playlist.h b/playlist.h index 361f521081..085ed50382 100644 --- a/playlist.h +++ b/playlist.h @@ -109,6 +109,8 @@ void content_playlist_get_index_by_path(content_playlist_t *playlist, char **path, char **core_path, char **core_name); +void content_playlist_write_file(content_playlist_t *playlist); + #ifdef __cplusplus } #endif diff --git a/tasks/task_database.c b/tasks/task_database.c index 645ac926fb..c3f29f24e5 100644 --- a/tasks/task_database.c +++ b/tasks/task_database.c @@ -129,6 +129,52 @@ static int database_info_list_iterate_next( return 1; } +/* TODO/FIXME - + * * - What 'core' to bind a playlist entry to if + * we are in Load Content (Detect Core)? Let the user + * choose the core to be loaded with it upon selecting + * the playlist entry? + * * - Extension needs to be changed from 'rdb' to + * 'cfg' + **/ +static int database_info_list_iterate_found_match( + database_state_handle_t *db_state, + database_info_handle_t *db + ) +{ + char db_playlist_path[PATH_MAX_LENGTH]; + const char *db_playlist_base = NULL; + content_playlist_t *playlist = NULL; + settings_t *settings = config_get_ptr(); + const char *db_path = db_state->list->elems[db_state->list_index].data; + const char *entry_path = db ? db->list->elems[db->list_ptr].data : NULL; + database_info_t *db_info_entry = &db_state->info->list[db_state->entry_index]; + + db_playlist_base = path_basename(db_path); + fill_pathname_join(db_playlist_path, settings->playlist_directory, + db_playlist_base, sizeof(db_playlist_path)); + + playlist = content_playlist_init(db_playlist_path, 1000); + +#if 0 + RARCH_LOG("Found match in database !\n"); + + RARCH_LOG("Path: %s\n", db_path); + RARCH_LOG("Playlist Path: %s\n", db_playlist_path); + RARCH_LOG("Entry Path: %s\n", entry_path); + RARCH_LOG("Playlist not NULL: %d\n", playlist != NULL); +#endif + + content_playlist_push(playlist, + entry_path, + "Test", + db_info_entry->name); + + content_playlist_write_file(playlist); + content_playlist_free(playlist); + return 0; +} + static int database_info_iterate_crc_lookup( database_state_handle_t *db_state, database_info_handle_t *db) @@ -156,12 +202,7 @@ static int database_info_iterate_crc_lookup( #endif if (strcasestr(entry_state_crc, db_info_entry->crc32)) - { -#if 0 - RARCH_LOG("Found match in database !\n"); -#endif - return 0; - } + return database_info_list_iterate_found_match(db_state, db); } }