1 /* nv_pair_list.c - the opkg package management system 2 3 Carl D. Worth 4 5 Copyright (C) 2001 University of Southern California 6 7 This program is free software; you can redistribute it and/or 8 modify it under the terms of the GNU General Public License as 9 published by the Free Software Foundation; either version 2, or (at 10 your option) any later version. 11 12 This program is distributed in the hope that it will be useful, but 13 WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 General Public License for more details. 16 */ 17 18 #include "nv_pair.h" 19 #include "void_list.h" 20 #include "nv_pair_list.h" 21 #include "libbb/libbb.h" 22 23 void nv_pair_list_init(nv_pair_list_t * list) 24 { 25 void_list_init((void_list_t *) list); 26 } 27 28 void nv_pair_list_deinit(nv_pair_list_t * list) 29 { 30 nv_pair_list_elt_t *pos; 31 nv_pair_t *nv_pair; 32 33 while (!void_list_empty(list)) { 34 pos = nv_pair_list_pop(list); 35 if (!pos) 36 break; 37 nv_pair = (nv_pair_t *) pos->data; 38 nv_pair_deinit(nv_pair); 39 /* malloced in nv_pair_list_append */ 40 free(nv_pair); 41 pos->data = NULL; 42 free(pos); 43 } 44 void_list_deinit((void_list_t *) list); 45 } 46 47 nv_pair_t *nv_pair_list_append(nv_pair_list_t * list, const char *name, 48 const char *value) 49 { 50 /* freed in nv_pair_list_deinit */ 51 nv_pair_t *nv_pair = xcalloc(1, sizeof(nv_pair_t)); 52 nv_pair_init(nv_pair, name, value); 53 void_list_append((void_list_t *) list, nv_pair); 54 55 return nv_pair; 56 } 57 58 void nv_pair_list_push(nv_pair_list_t * list, nv_pair_t * data) 59 { 60 void_list_push((void_list_t *) list, data); 61 } 62 63 nv_pair_list_elt_t *nv_pair_list_pop(nv_pair_list_t * list) 64 { 65 return (nv_pair_list_elt_t *) void_list_pop((void_list_t *) list); 66 } 67 68 char *nv_pair_list_find(nv_pair_list_t * list, char *name) 69 { 70 nv_pair_list_elt_t *iter; 71 nv_pair_t *nv_pair; 72 73 list_for_each_entry(iter, &list->head, node) { 74 nv_pair = (nv_pair_t *) iter->data; 75 if (strcmp(nv_pair->name, name) == 0) { 76 return nv_pair->value; 77 } 78 } 79 return NULL; 80 } 81 82 nv_pair_list_elt_t *nv_pair_list_first(nv_pair_list_t * list) 83 { 84 return (nv_pair_list_elt_t *) void_list_first((void_list_t *) list); 85 } 86 87 nv_pair_list_elt_t *nv_pair_list_next(nv_pair_list_t * list, 88 nv_pair_list_elt_t * node) 89 { 90 return (nv_pair_list_elt_t *) void_list_next((void_list_t *) list, 91 (void_list_elt_t *) node); 92 } 93
This page was automatically generated by LXR 0.3.1. • OpenWrt