From 3d2092ee23687aebaeafbabaf72ed7998d10206b Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 7 Aug 2012 23:36:21 +0200 Subject: locate: make the structs opaque --- src/locate.c | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) (limited to 'src/locate.c') diff --git a/src/locate.c b/src/locate.c index 6a7002f2e..e966747fd 100644 --- a/src/locate.c +++ b/src/locate.c @@ -31,6 +31,24 @@ #define LOCATE_TAG_FILE_KEY_OLD "filename" #define LOCATE_TAG_ANY_KEY "any" +/* struct used for search, find, list queries */ +struct locate_item { + int8_t tag; + /* what we are looking for */ + char *needle; +}; + +/** + * An array of struct locate_item objects. + */ +struct locate_item_list { + /** number of items */ + unsigned length; + + /** this is a variable length array */ + struct locate_item items[1]; +}; + int locate_parse_type(const char *str) { @@ -74,17 +92,26 @@ locate_item_list_free(struct locate_item_list *list) g_free(list); } -struct locate_item_list * +static struct locate_item_list * locate_item_list_new(unsigned length) { struct locate_item_list *list = - g_malloc0(sizeof(*list) - sizeof(list->items[0]) + - length * sizeof(list->items[0])); + g_malloc(sizeof(*list) - sizeof(list->items[0]) + + length * sizeof(list->items[0])); list->length = length; return list; } +struct locate_item_list * +locate_item_list_new_single(unsigned tag, const char *needle) +{ + struct locate_item_list *list = locate_item_list_new(1); + list->items[0].tag = tag; + list->items[0].needle = g_strdup(needle); + return list; +} + struct locate_item_list * locate_item_list_parse(char *argv[], unsigned argc, bool fold_case) { -- cgit v1.2.3