static int task_database_iterate_playlist_lutro( db_handle_t *_db, database_state_handle_t *db_state, database_info_handle_t *db, const char *path) { char *db_playlist_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); playlist_t *playlist = NULL; db_playlist_path[0] = '\0'; if (!string_is_empty(_db->playlist_directory)) fill_pathname_join(db_playlist_path, _db->playlist_directory, file_path_str(FILE_PATH_LUTRO_PLAYLIST), PATH_MAX_LENGTH * sizeof(char)); playlist = playlist_init(db_playlist_path, COLLECTION_SIZE); free(db_playlist_path); if(!playlist_entry_exists(playlist, path, file_path_str(FILE_PATH_DETECT))) { char *game_title = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); game_title[0] = '\0'; fill_short_pathname_representation_noext(game_title, path, PATH_MAX_LENGTH * sizeof(char)); playlist_push(playlist, path, game_title, file_path_str(FILE_PATH_DETECT), file_path_str(FILE_PATH_DETECT), file_path_str(FILE_PATH_DETECT), file_path_str(FILE_PATH_LUTRO_PLAYLIST)); free(game_title); } playlist_write_file(playlist); playlist_free(playlist); return 0; }
static int task_database_iterate_playlist_lutro( database_state_handle_t *db_state, database_info_handle_t *db, const char *path) { char db_playlist_path[PATH_MAX_LENGTH]; playlist_t *playlist = NULL; settings_t *settings = config_get_ptr(); db_playlist_path[0] = '\0'; fill_pathname_join(db_playlist_path, settings->directory.playlist, file_path_str(FILE_PATH_LUTRO_PLAYLIST), sizeof(db_playlist_path)); playlist = playlist_init(db_playlist_path, COLLECTION_SIZE); if(!playlist_entry_exists(playlist, path, file_path_str(FILE_PATH_DETECT))) { char game_title[PATH_MAX_LENGTH]; game_title[0] = '\0'; fill_short_pathname_representation_noext(game_title, path, sizeof(game_title)); playlist_push(playlist, path, game_title, file_path_str(FILE_PATH_DETECT), file_path_str(FILE_PATH_DETECT), file_path_str(FILE_PATH_DETECT), file_path_str(FILE_PATH_LUTRO_PLAYLIST)); } playlist_write_file(playlist); playlist_free(playlist); return 0; }
static int database_info_list_iterate_found_match( database_state_handle_t *db_state, database_info_handle_t *db, const char *zip_name ) { char db_crc[PATH_MAX_LENGTH] = {0}; char db_playlist_path[PATH_MAX_LENGTH] = {0}; char db_playlist_base_str[PATH_MAX_LENGTH] = {0}; char entry_path_str[PATH_MAX_LENGTH] = {0}; 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]; fill_short_pathname_representation(db_playlist_base_str, db_path, sizeof(db_playlist_base_str)); path_remove_extension(db_playlist_base_str); strlcat(db_playlist_base_str, ".lpl", sizeof(db_playlist_base_str)); fill_pathname_join(db_playlist_path, settings->directory.playlist, db_playlist_base_str, sizeof(db_playlist_path)); playlist = playlist_init(db_playlist_path, COLLECTION_SIZE); snprintf(db_crc, sizeof(db_crc), "%08X|crc", db_info_entry->crc32); if (entry_path) strlcpy(entry_path_str, entry_path, sizeof(entry_path_str)); if (!string_is_empty(zip_name)) fill_pathname_join_delim(entry_path_str, entry_path_str, zip_name, '#', sizeof(entry_path_str)); #if 0 RARCH_LOG("Found match in database !\n"); RARCH_LOG("Path: %s\n", db_path); RARCH_LOG("CRC : %s\n", db_crc); 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); RARCH_LOG("ZIP entry: %s\n", zip_name); RARCH_LOG("entry path str: %s\n", entry_path_str); #endif if(!playlist_entry_exists(playlist, entry_path_str, db_crc)) { playlist_push(playlist, entry_path_str, db_info_entry->name, "DETECT", "DETECT", db_crc, db_playlist_base_str); } playlist_write_file(playlist); playlist_free(playlist); database_info_list_free(db_state->info); db_state->info = NULL; db_state->crc = 0; return 0; }
static int database_info_list_iterate_found_match( db_handle_t *_db, database_state_handle_t *db_state, database_info_handle_t *db, const char *archive_name ) { char *db_crc = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); char *db_playlist_base_str = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); char *db_playlist_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); char *entry_path_str = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); playlist_t *playlist = NULL; const char *db_path = database_info_get_current_name(db_state); const char *entry_path = database_info_get_current_element_name(db); database_info_t *db_info_entry = &db_state->info->list[db_state->entry_index]; char *hash; db_crc[0] = '\0'; db_playlist_path[0] = '\0'; db_playlist_base_str[0] = '\0'; entry_path_str[0] = '\0'; fill_short_pathname_representation_noext(db_playlist_base_str, db_path, PATH_MAX_LENGTH * sizeof(char)); strlcat(db_playlist_base_str, file_path_str(FILE_PATH_LPL_EXTENSION), PATH_MAX_LENGTH * sizeof(char)); if (!string_is_empty(_db->playlist_directory)) fill_pathname_join(db_playlist_path, _db->playlist_directory, db_playlist_base_str, PATH_MAX_LENGTH * sizeof(char)); playlist = playlist_init(db_playlist_path, COLLECTION_SIZE); snprintf(db_crc, PATH_MAX_LENGTH * sizeof(char), "%08X|crc", db_info_entry->crc32); if (entry_path) strlcpy(entry_path_str, entry_path, PATH_MAX_LENGTH * sizeof(char)); if (!string_is_empty(archive_name)) fill_pathname_join_delim(entry_path_str, entry_path_str, archive_name, '#', PATH_MAX_LENGTH * sizeof(char)); if (core_info_database_match_archive_member( db_state->list->elems[db_state->list_index].data) && (hash = strchr(entry_path_str, '#'))) *hash = '\0'; #if defined(RARCH_INTERNAL) #if 0 RARCH_LOG("Found match in database !\n"); RARCH_LOG("Path: %s\n", db_path); RARCH_LOG("CRC : %s\n", db_crc); 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); RARCH_LOG("ZIP entry: %s\n", archive_name); RARCH_LOG("entry path str: %s\n", entry_path_str); #endif #else fprintf(stderr, "Found match in database !\n"); fprintf(stderr, "Path: %s\n", db_path); fprintf(stderr, "CRC : %s\n", db_crc); fprintf(stderr, "Playlist Path: %s\n", db_playlist_path); fprintf(stderr, "Entry Path: %s\n", entry_path); fprintf(stderr, "Playlist not NULL: %d\n", playlist != NULL); fprintf(stderr, "ZIP entry: %s\n", archive_name); fprintf(stderr, "entry path str: %s\n", entry_path_str); #endif if(!playlist_entry_exists(playlist, entry_path_str, db_crc)) { playlist_push(playlist, entry_path_str, db_info_entry->name, file_path_str(FILE_PATH_DETECT), file_path_str(FILE_PATH_DETECT), db_crc, db_playlist_base_str); } playlist_write_file(playlist); playlist_free(playlist); database_info_list_free(db_state->info); free(db_state->info); db_state->info = NULL; db_state->crc = 0; free(entry_path_str); free(db_playlist_path); free(db_playlist_base_str); free(db_crc); /* Move database to start since we are likely to match against it again */ if (db_state->list_index != 0) { struct string_list_elem entry = db_state->list->elems[db_state->list_index]; memmove(&db_state->list->elems[1], &db_state->list->elems[0], sizeof(entry) * db_state->list_index); db_state->list->elems[0] = entry; } return 0; }
static int database_info_list_iterate_found_match( db_handle_t *_db, database_state_handle_t *db_state, database_info_handle_t *db, const char *archive_name ) { char *db_crc = (char*)malloc(128 * sizeof(char)); char *db_playlist_base_str = (char*)malloc(128 * sizeof(char)); char *db_playlist_path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); char *entry_path_str = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); playlist_t *playlist = NULL; const char *db_path = database_info_get_current_name(db_state); const char *entry_path = database_info_get_current_element_name(db); database_info_t *db_info_entry = &db_state->info->list[db_state->entry_index]; db_crc[0] = '\0'; db_playlist_path[0] = '\0'; db_playlist_base_str[0] = '\0'; entry_path_str[0] = '\0'; fill_short_pathname_representation_noext(db_playlist_base_str, db_path, 128 * sizeof(char)); strlcat(db_playlist_base_str, file_path_str(FILE_PATH_LPL_EXTENSION), 128 * sizeof(char)); fill_pathname_join(db_playlist_path, _db->playlist_directory, db_playlist_base_str, PATH_MAX_LENGTH * sizeof(char)); playlist = playlist_init(db_playlist_path, COLLECTION_SIZE); snprintf(db_crc, 128 * sizeof(char), "%08X|crc", db_info_entry->crc32); if (entry_path) strlcpy(entry_path_str, entry_path, 128 * sizeof(char)); if (!string_is_empty(archive_name)) fill_pathname_join_delim(entry_path_str, entry_path_str, archive_name, '#', 128 * sizeof(char)); #if 0 RARCH_LOG("Found match in database !\n"); RARCH_LOG("Path: %s\n", db_path); RARCH_LOG("CRC : %s\n", db_crc); 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); RARCH_LOG("ZIP entry: %s\n", archive_name); RARCH_LOG("entry path str: %s\n", entry_path_str); #endif if(!playlist_entry_exists(playlist, entry_path_str, db_crc)) { playlist_push(playlist, entry_path_str, db_info_entry->name, file_path_str(FILE_PATH_DETECT), file_path_str(FILE_PATH_DETECT), db_crc, db_playlist_base_str); } playlist_write_file(playlist); playlist_free(playlist); database_info_list_free(db_state->info); free(db_state->info); db_state->info = NULL; db_state->crc = 0; free(entry_path_str); free(db_playlist_path); free(db_playlist_base_str); free(db_crc); return 0; }