• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/opkg-lede/libopkg/nv_pair_list.c

  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