From e80c7f2ae7d3946a5398cfa35dfe92027249024b Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 25 May 2007 14:53:21 +0000 Subject: Add missing list functions --- eglib/gmain.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'eglib/gmain.c') diff --git a/eglib/gmain.c b/eglib/gmain.c index 89794c05..027fd60c 100644 --- a/eglib/gmain.c +++ b/eglib/gmain.c @@ -1164,6 +1164,40 @@ GSList* g_slist_last(GSList *list) return list; } +static inline GSList* _g_slist_remove_link(GSList *list, GSList *link) +{ + GSList *tmp; + GSList *prev; + + prev = NULL; + tmp = list; + + while (tmp) { + if (tmp == link) { + if (prev) + prev->next = tmp->next; + if (list == tmp) + list = list->next; + + tmp->next = NULL; + break; + } + + prev = tmp; + tmp = tmp->next; + } + + return list; +} + +GSList* g_slist_delete_link(GSList *list, GSList *link) +{ + list = _g_slist_remove_link(list, link); + g_free(link); + + return list; +} + /* Memory allocation functions */ gpointer g_malloc(gulong n_bytes) -- cgit