From 8f766574d30e1368656a2fc3aa70b0e06bd2e5a9 Mon Sep 17 00:00:00 2001 From: radius Date: Mon, 23 Jan 2017 21:21:26 -0500 Subject: [PATCH] strstr produces lot of false matches, path_remote_extension didn't seem to work so I included my own version --- tasks/task_netplay_find_content.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/tasks/task_netplay_find_content.c b/tasks/task_netplay_find_content.c index 1be6a487c5..1bb7811951 100644 --- a/tasks/task_netplay_find_content.c +++ b/tasks/task_netplay_find_content.c @@ -88,6 +88,23 @@ static void netplay_crc_scan_callback(void *task_data, free(state); } +char *filename_remove_ext(const char* str) +{ + char *ret; + char *lastdot; + + if (str == NULL) + return NULL; + if ((ret = malloc (strlen (str) + 1)) == NULL) + return NULL; + strcpy (ret, str); + lastdot = strrchr (ret, '.'); + if (lastdot != NULL) + *lastdot = '\0'; + + return ret; +} + static void task_netplay_crc_scan_handler(retro_task_t *task) { size_t i, j; @@ -127,7 +144,7 @@ static void task_netplay_crc_scan_handler(retro_task_t *task) { if (string_is_equal(playlist->entries[j].crc32, state->crc)) { - printf("CRC Match %s\n", state->crc); + printf("CRC Match %s\n", playlist->entries[j].crc32); strlcpy(state->path, playlist->entries[j].path, sizeof(state->path)); state->found = true; task_set_data(task, state); @@ -160,10 +177,14 @@ static void task_netplay_crc_scan_handler(retro_task_t *task) for (j = 0; j < playlist->size; j++) { - /*printf("State: %s Entry: %s\n", state->path, playlist->entries[j].path);*/ - if (strstr(playlist->entries[j].path, state->path)) + const char* buf = path_basename(playlist->entries[j].path); + char* entry = filename_remove_ext(buf); +#if 1 + printf("%s %s\n", entry, state->path); +#endif + if (string_is_equal(entry, state->path)) { - printf("Filename Match %s\n", state->path); + printf("Filename Match %s\n", playlist->entries[j].path); strlcpy(state->path, playlist->entries[j].path, sizeof(state->path)); state->found = true; task_set_data(task, state); @@ -172,8 +193,10 @@ static void task_netplay_crc_scan_handler(retro_task_t *task) task_set_finished(task, true); string_list_free(state->lpl_list); free(playlist); + free(entry); return; } + free(entry); task_set_progress(task, (int)(j/playlist->size*100.0)); }