summaryrefslogtreecommitdiff
path: root/lib/list.c
diff options
context:
space:
mode:
authorJari Vetoniemi <mailroxas@gmail.com>2014-10-25 01:38:30 +0300
committerJari Vetoniemi <mailroxas@gmail.com>2014-10-25 01:38:30 +0300
commit3f5e21a83f525586d1ee5b1bcd04cc2e50350403 (patch)
tree226cb57348ae89bc62df34cfd7ee2afe43f03c45 /lib/list.c
parentf8d97efb8f1bc5a7e764e1bb14f0e97ac36de68d (diff)
downloadbemenu-3f5e21a83f525586d1ee5b1bcd04cc2e50350403.tar.gz
bemenu-3f5e21a83f525586d1ee5b1bcd04cc2e50350403.tar.bz2
bemenu-3f5e21a83f525586d1ee5b1bcd04cc2e50350403.zip
Cleanup wayland renderer and plugin support.
Diffstat (limited to 'lib/list.c')
-rw-r--r--lib/list.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/lib/list.c b/lib/list.c
index 918e830..993998f 100644
--- a/lib/list.c
+++ b/lib/list.c
@@ -79,15 +79,8 @@ list_grow(struct list *list, uint32_t step)
void *tmp;
uint32_t nsize = sizeof(struct bm_item*) * (list->allocated + step);
- if (!list->items || !(tmp = realloc(list->items, nsize))) {
- if (!(tmp = malloc(nsize)))
- return false;
-
- if (list->items) {
- memcpy(tmp, list->items, sizeof(struct bm_item*) * list->allocated);
- free(list->items);
- }
- }
+ if (!(tmp = realloc(list->items, nsize)))
+ return false;
list->items = tmp;
list->allocated += step;
@@ -136,9 +129,18 @@ list_remove_item_at(struct list *list, uint32_t index)
bool
list_remove_item(struct list *list, const void *item)
{
+ assert(list && item);
+
uint32_t i;
for (i = 0; i < list->count && list->items[i] != item; ++i);
return list_remove_item_at(list, i);
}
+void
+list_sort(struct list *list, int (*compar)(const void *a, const void *b))
+{
+ assert(list && compar);
+ qsort(list->items, list->count, sizeof(void*), compar);
+}
+
/* vim: set ts=8 sw=4 tw=0 :*/