X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=libsysfs%2Fdlist.c;h=942eccb48c89850a83e7806318a3803641fe68a3;hb=4a539daf1e5daa17b52239478d97f8dc7a6506b6;hp=6dfcf726baed68e8aa595416a321718e6e3da43c;hpb=fe3fe3b29ffbc7d0ce7dca6a371da31d8b3ff7f8;p=elogind.git diff --git a/libsysfs/dlist.c b/libsysfs/dlist.c index 6dfcf726b..942eccb48 100644 --- a/libsysfs/dlist.c +++ b/libsysfs/dlist.c @@ -27,6 +27,7 @@ * delete function. Otherwise dlist will just use free. */ +#include #include "dlist.h" /* @@ -259,6 +260,16 @@ void dlist_unshift(Dlist *list,void *data) dlist_insert(list,data,0); } +void dlist_unshift_sorted(Dlist *list, void *data, + int (*sorter)(void *new, void *old)) +{ + if (list->count == 0) + dlist_unshift(list, data); + else { + list->marker=list->head->next; + dlist_insert_sorted(list, data, sorter); + } +} /* * Remove end node from list.