X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Futils%2Fllist.c;h=0a4665d09296c2387bcf1f369f81f5e751c20fa4;hb=4215d1d8c69367c1d43bed9d39d428a92b329a92;hp=0af9c8cb11bec4346b96c557275b4a813ccfd618;hpb=2a7356847217432a1858a5686b67f0545102a810;p=sysdb.git diff --git a/src/utils/llist.c b/src/utils/llist.c index 0af9c8c..0a4665d 100644 --- a/src/utils/llist.c +++ b/src/utils/llist.c @@ -434,5 +434,29 @@ sdb_llist_iter_get_next(sdb_llist_iter_t *iter) return obj; } /* sdb_llist_iter_get_next */ +int +sdb_llist_iter_remove_current(sdb_llist_iter_t *iter) +{ + sdb_llist_elem_t *elem; + + if ((! iter) || (! iter->list)) + return -1; + + pthread_rwlock_wrlock(&iter->list->lock); + + if (! iter->elem) /* reached end of list */ + elem = iter->list->tail; + else + elem = iter->elem->prev; + if (elem) + sdb_llist_remove_elem(iter->list, elem); + + pthread_rwlock_unlock(&iter->list->lock); + + if (! elem) + return -1; + return 0; +} /* sdb_llist_iter_remove */ + /* vim: set tw=78 sw=4 ts=4 noexpandtab : */