mirror of
https://github.com/libretro/RetroArch
synced 2025-02-06 00:39:53 +00:00
Create database_info_build_query_enum
This commit is contained in:
parent
c8dc0fef0c
commit
6d285be90c
@ -206,6 +206,100 @@ int database_info_build_query(char *s, size_t len,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int database_info_build_query_enum(char *s, size_t len,
|
||||
enum database_query_type type,
|
||||
const char *path)
|
||||
{
|
||||
bool add_quotes = true;
|
||||
bool add_glob = false;
|
||||
|
||||
database_info_build_query_add_bracket_open(s, len);
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case DATABASE_QUERY_ENTRY:
|
||||
strlcat(s, "name", len);
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_PUBLISHER:
|
||||
strlcat(s, "publisher", len);
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_DEVELOPER:
|
||||
strlcat(s, "developer", len);
|
||||
add_glob = true;
|
||||
add_quotes = false;
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_ORIGIN:
|
||||
strlcat(s, "origin", len);
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_FRANCHISE:
|
||||
strlcat(s, "franchise", len);
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_RATING:
|
||||
strlcat(s, "esrb_rating", len);
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_BBFC_RATING:
|
||||
strlcat(s, "bbfc_rating", len);
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_ELSPA_RATING:
|
||||
strlcat(s, "elspa_rating", len);
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_PEGI_RATING:
|
||||
strlcat(s, "pegi_rating", len);
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_CERO_RATING:
|
||||
strlcat(s, "cero_rating", len);
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_ENHANCEMENT_HW:
|
||||
strlcat(s, "enhancement_hw", len);
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_EDGE_MAGAZINE_RATING:
|
||||
strlcat(s, "edge_rating", len);
|
||||
add_quotes = false;
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_EDGE_MAGAZINE_ISSUE:
|
||||
strlcat(s, "edge_issue", len);
|
||||
add_quotes = false;
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_FAMITSU_MAGAZINE_RATING:
|
||||
strlcat(s, "famitsu_rating", len);
|
||||
add_quotes = false;
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_RELEASEDATE_MONTH:
|
||||
strlcat(s, "releasemonth", len);
|
||||
add_quotes = false;
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_RELEASEDATE_YEAR:
|
||||
strlcat(s, "releaseyear", len);
|
||||
add_quotes = false;
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_MAX_USERS:
|
||||
strlcat(s, "users", len);
|
||||
add_quotes = false;
|
||||
break;
|
||||
default:
|
||||
RARCH_LOG("Unknown type: %d\n", type);
|
||||
break;
|
||||
}
|
||||
|
||||
database_info_build_query_add_colon(s, len);
|
||||
if (add_glob)
|
||||
database_info_build_query_add_glob_open(s, len);
|
||||
if (add_quotes)
|
||||
database_info_build_query_add_quote(s, len);
|
||||
strlcat(s, path, len);
|
||||
if (add_glob)
|
||||
database_info_build_query_add_glob_close(s, len);
|
||||
if (add_quotes)
|
||||
database_info_build_query_add_quote(s, len);
|
||||
database_info_build_query_add_bracket_close(s, len);
|
||||
|
||||
#if 0
|
||||
RARCH_LOG("query: %s\n", s);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* NOTE: Allocates memory, it is the caller's responsibility to free the
|
||||
* memory after it is no longer required.
|
||||
|
@ -47,6 +47,28 @@ enum database_type
|
||||
DATABASE_TYPE_CRC_LOOKUP
|
||||
};
|
||||
|
||||
enum database_query_type
|
||||
{
|
||||
DATABASE_QUERY_NONE = 0,
|
||||
DATABASE_QUERY_ENTRY,
|
||||
DATABASE_QUERY_ENTRY_PUBLISHER,
|
||||
DATABASE_QUERY_ENTRY_DEVELOPER,
|
||||
DATABASE_QUERY_ENTRY_ORIGIN,
|
||||
DATABASE_QUERY_ENTRY_FRANCHISE,
|
||||
DATABASE_QUERY_ENTRY_RATING,
|
||||
DATABASE_QUERY_ENTRY_BBFC_RATING,
|
||||
DATABASE_QUERY_ENTRY_ELSPA_RATING,
|
||||
DATABASE_QUERY_ENTRY_PEGI_RATING,
|
||||
DATABASE_QUERY_ENTRY_CERO_RATING,
|
||||
DATABASE_QUERY_ENTRY_ENHANCEMENT_HW,
|
||||
DATABASE_QUERY_ENTRY_EDGE_MAGAZINE_RATING,
|
||||
DATABASE_QUERY_ENTRY_EDGE_MAGAZINE_ISSUE,
|
||||
DATABASE_QUERY_ENTRY_FAMITSU_MAGAZINE_RATING,
|
||||
DATABASE_QUERY_ENTRY_RELEASEDATE_MONTH,
|
||||
DATABASE_QUERY_ENTRY_RELEASEDATE_YEAR,
|
||||
DATABASE_QUERY_ENTRY_MAX_USERS
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
enum database_status status;
|
||||
@ -113,6 +135,9 @@ void database_info_free(database_info_handle_t *handle);
|
||||
int database_info_build_query(
|
||||
char *query, size_t len, const char *label, const char *path);
|
||||
|
||||
int database_info_build_query_enum(
|
||||
char *query, size_t len, enum database_query_type type, const char *path);
|
||||
|
||||
/* NOTE: Allocates memory, it is the caller's responsibility to free the
|
||||
* memory after it is no longer required. */
|
||||
char *bin_to_hex_alloc(const uint8_t *data, size_t len);
|
||||
|
@ -1694,8 +1694,8 @@ static int menu_displaylist_parse_database_entry(menu_displaylist_info_t *info)
|
||||
if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu))
|
||||
goto error;
|
||||
|
||||
database_info_build_query(query, sizeof(query),
|
||||
"displaylist_parse_database_entry", info->path_b);
|
||||
database_info_build_query_enum(query, sizeof(query),
|
||||
DATABASE_QUERY_ENTRY, info->path_b);
|
||||
|
||||
db_info = database_info_list_new(info->path, query);
|
||||
if (!db_info)
|
||||
|
Loading…
x
Reference in New Issue
Block a user