summaryrefslogtreecommitdiffstats
path: root/libopkg/nv_pair_list.c
diff options
context:
space:
mode:
authorticktock35 <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)
commit5f550c85c4d2308a15f49f4d2d975b0614867412 (patch)
treed9773c75c5668858ef7bea507b465ca352624391 /libopkg/nv_pair_list.c
parent2cec79cb14f343d822bb8098b022fe4344261c7f (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.c45
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);
+}
+
+
+