From ab6e81997cf8c5bcf7d1778bb32d8e01425b13f1 Mon Sep 17 00:00:00 2001 From: "Rafael G. Martins" Date: Thu, 22 Dec 2016 20:48:33 +0100 Subject: common: utils: added bc_slist_pop() --- src/common/utils.c | 13 +++++++++++++ src/common/utils.h | 4 ++++ 2 files changed, 17 insertions(+) (limited to 'src/common') diff --git a/src/common/utils.c b/src/common/utils.c index 97fa671..c78229d 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -105,6 +105,19 @@ bc_slist_length(bc_slist_t *l) } +bc_slist_t* +bc_slist_pop(bc_slist_t *l, void **data) +{ + if (l == NULL) + return l; + bc_slist_t *tmp = l; + l = l->next; + *data = tmp->data; + free(tmp); + return l; +} + + char* bc_strdup(const char *s) { diff --git a/src/common/utils.h b/src/common/utils.h index b0388b3..811c593 100644 --- a/src/common/utils.h +++ b/src/common/utils.h @@ -35,6 +35,10 @@ void bc_slist_free(bc_slist_t *l); void bc_slist_free_full(bc_slist_t *l, bc_free_func_t free_func); size_t bc_slist_length(bc_slist_t *l); +// here i'm just extending slist, instead of implementing a fully featuered +// queue for the sake of simplicity +bc_slist_t* bc_slist_pop(bc_slist_t *l, void **data); + // strfuncs -- cgit v1.2.3-18-g5258