Commit e6cb939a authored by Max Kellermann's avatar Max Kellermann

locate: added locate_item_list_casefold()

Merged casefolding code from two locations into this one library function.
parent 6a2118d0
...@@ -84,14 +84,10 @@ searchForSongsIn(struct client *client, const char *name, ...@@ -84,14 +84,10 @@ searchForSongsIn(struct client *client, const char *name,
const struct locate_item_list *criteria) const struct locate_item_list *criteria)
{ {
int ret; int ret;
struct locate_item_list *new_list; struct locate_item_list *new_list
= locate_item_list_casefold(criteria);
struct search_data data; struct search_data data;
new_list = locate_item_list_new(criteria->length);
for (unsigned i = 0; i < criteria->length; i++)
new_list->items[i].needle =
g_utf8_casefold(criteria->items[i].needle, -1);
data.client = client; data.client = client;
data.criteria = new_list; data.criteria = new_list;
......
...@@ -117,6 +117,18 @@ locate_item_list_parse(char *argv[], int argc) ...@@ -117,6 +117,18 @@ locate_item_list_parse(char *argv[], int argc)
return list; return list;
} }
struct locate_item_list *
locate_item_list_casefold(const struct locate_item_list *list)
{
struct locate_item_list *new_list = locate_item_list_new(list->length);
for (unsigned i = 0; i < list->length; i++)
new_list->items[i].needle =
g_utf8_casefold(list->items[i].needle, -1);
return new_list;
}
void void
locate_item_free(struct locate_item *item) locate_item_free(struct locate_item *item)
{ {
......
...@@ -63,6 +63,13 @@ locate_item_list_new(unsigned length); ...@@ -63,6 +63,13 @@ locate_item_list_new(unsigned length);
struct locate_item_list * struct locate_item_list *
locate_item_list_parse(char *argv[], int argc); locate_item_list_parse(char *argv[], int argc);
/**
* Duplicate the struct locate_item_list object and convert all
* needles with g_utf8_casefold().
*/
struct locate_item_list *
locate_item_list_casefold(const struct locate_item_list *list);
void void
locate_item_list_free(struct locate_item_list *list); locate_item_list_free(struct locate_item_list *list);
......
...@@ -85,11 +85,7 @@ queue_search(struct client *client, const struct queue *queue, ...@@ -85,11 +85,7 @@ queue_search(struct client *client, const struct queue *queue,
{ {
unsigned i; unsigned i;
struct locate_item_list *new_list = struct locate_item_list *new_list =
locate_item_list_new(criteria->length); locate_item_list_casefold(criteria);
for (i = 0; i < criteria->length; i++)
new_list->items[i].needle =
g_utf8_casefold(criteria->items[i].needle, -1);
for (i = 0; i < queue_length(queue); i++) { for (i = 0; i < queue_length(queue); i++) {
const struct song *song = queue_get(queue, i); const struct song *song = queue_get(queue, i);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment