diff options
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/utils.c | 13 | ||||
-rw-r--r-- | src/common/utils.h | 4 |
2 files changed, 17 insertions, 0 deletions
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 |