diff options
author | ticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358> | 2008-12-18 12:47:41 (EST) |
---|---|---|
committer | ticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358> | 2008-12-18 12:47:41 (EST) |
commit | 5f550c85c4d2308a15f49f4d2d975b0614867412 (patch) | |
tree | d9773c75c5668858ef7bea507b465ca352624391 /libopkg/nv_pair_list.c | |
parent | 2cec79cb14f343d822bb8098b022fe4344261c7f (diff) |
using list_head to handle the list
git-svn-id: http://opkg.googlecode.com/svn/trunk@185 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358
Diffstat (limited to 'libopkg/nv_pair_list.c')
-rw-r--r-- | libopkg/nv_pair_list.c | 45 |
1 files changed, 29 insertions, 16 deletions
diff --git a/libopkg/nv_pair_list.c b/libopkg/nv_pair_list.c index 544d1e0..fc4cd0f 100644 --- a/libopkg/nv_pair_list.c +++ b/libopkg/nv_pair_list.c @@ -21,15 +21,6 @@ #include "void_list.h" #include "nv_pair_list.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) { @@ -38,16 +29,19 @@ int nv_pair_list_init(nv_pair_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); } @@ -88,11 +82,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); +} + + + |