diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/list.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/common/list.c b/common/list.c index 39cc10e1..66d52f70 100644 --- a/common/list.c +++ b/common/list.c @@ -2,6 +2,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include "log.h" list_t *create_list(void) { list_t *list = malloc(sizeof(list_t)); @@ -82,6 +83,20 @@ void list_swap(list_t *list, int src, int dest) { list->items[dest] = tmp; } +void list_move_to_end(list_t *list, void *item) { + int i; + for (i = 0; i < list->length; ++i) { + if (list->items[i] == item) { + break; + } + } + if (!sway_assert(i < list->length, "Item not found in list")) { + return; + } + list_del(list, i); + list_add(list, item); +} + static void list_rotate(list_t *list, int from, int to) { void *tmp = list->items[to]; |