X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;ds=sidebyside;f=libopkg%2Fnv_pair_list.c;h=333e721aa2ec26c3b917a313dab13d2bdb834479;hb=e259cf526cc83edf25faa295f138695274cbfe11;hp=49d6225a899db2c1949afe7ce0e337cb60134eaa;hpb=69bae440fd21376d2a717575b1418c962396bd21;p=oweals%2Fopkg-lede.git diff --git a/libopkg/nv_pair_list.c b/libopkg/nv_pair_list.c index 49d6225..333e721 100644 --- a/libopkg/nv_pair_list.c +++ b/libopkg/nv_pair_list.c @@ -1,4 +1,4 @@ -/* nv_pair_list.c - the itsy package management system +/* nv_pair_list.c - the opkg package management system Carl D. Worth @@ -15,67 +15,48 @@ General Public License for more details. */ -#include "includes.h" - #include "nv_pair.h" #include "void_list.h" #include "nv_pair_list.h" +#include "libbb/libbb.h" -int nv_pair_list_elt_init(nv_pair_list_elt_t *elt, nv_pair_t *data) -{ - return void_list_elt_init((void_list_elt_t *) elt, data); -} - -void nv_pair_list_elt_deinit(nv_pair_list_elt_t *elt) -{ - void_list_elt_deinit((void_list_elt_t *) elt); -} - -int nv_pair_list_init(nv_pair_list_t *list) +void nv_pair_list_init(nv_pair_list_t *list) { - return void_list_init((void_list_t *) list); + void_list_init((void_list_t *) list); } void nv_pair_list_deinit(nv_pair_list_t *list) { - nv_pair_list_elt_t *iter; + nv_pair_list_elt_t *pos; nv_pair_t *nv_pair; - for (iter = list->head; iter; iter = iter->next) { - nv_pair = iter->data; + while(!void_list_empty(list)) { + pos = nv_pair_list_pop(list); + if (!pos) + break; + nv_pair = (nv_pair_t *) pos->data; nv_pair_deinit(nv_pair); - /* malloced in nv_pair_list_append */ free(nv_pair); - iter->data = NULL; + pos->data = NULL; + free(pos); } void_list_deinit((void_list_t *) list); } nv_pair_t *nv_pair_list_append(nv_pair_list_t *list, const char *name, const char *value) { - int err; - /* freed in nv_pair_list_deinit */ - nv_pair_t *nv_pair = malloc(sizeof(nv_pair_t)); - - if (nv_pair == NULL) { - fprintf(stderr, "%s: out of memory\n", __FUNCTION__); - return NULL; - } + nv_pair_t *nv_pair = xcalloc(1, sizeof(nv_pair_t)); nv_pair_init(nv_pair, name, value); - - err = void_list_append((void_list_t *) list, nv_pair); - if (err) { - return NULL; - } + void_list_append((void_list_t *) list, nv_pair); return nv_pair; } -int nv_pair_list_push(nv_pair_list_t *list, nv_pair_t *data) +void nv_pair_list_push(nv_pair_list_t *list, nv_pair_t *data) { - return void_list_push((void_list_t *) list, data); + void_list_push((void_list_t *) list, data); } nv_pair_list_elt_t *nv_pair_list_pop(nv_pair_list_t *list) @@ -88,11 +69,30 @@ char *nv_pair_list_find(nv_pair_list_t *list, char *name) nv_pair_list_elt_t *iter; nv_pair_t *nv_pair; - for (iter = list->head; iter; iter = iter->next) { - nv_pair = iter->data; + list_for_each_entry(iter, &list->head, node) { + nv_pair = (nv_pair_t *)iter->data; if (strcmp(nv_pair->name, name) == 0) { return nv_pair->value; } - } + } return NULL; } + +nv_pair_list_elt_t *nv_pair_list_first(nv_pair_list_t *list) { + return (nv_pair_list_elt_t * )void_list_first((void_list_t *) list); +} + +nv_pair_list_elt_t *nv_pair_list_prev(nv_pair_list_t *list, nv_pair_list_elt_t *node) { + return (nv_pair_list_elt_t * )void_list_prev((void_list_t *) list, (void_list_elt_t *)node); +} + +nv_pair_list_elt_t *nv_pair_list_next(nv_pair_list_t *list, nv_pair_list_elt_t *node) { + return (nv_pair_list_elt_t * )void_list_next((void_list_t *) list, (void_list_elt_t *)node); +} + +nv_pair_list_elt_t *nv_pair_list_last(nv_pair_list_t *list) { + return (nv_pair_list_elt_t * )void_list_last((void_list_t *) list); +} + + +