aboutsummaryrefslogtreecommitdiff
path: root/src/util/container_slist.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/container_slist.c')
-rw-r--r--src/util/container_slist.c74
1 files changed, 39 insertions, 35 deletions
diff --git a/src/util/container_slist.c b/src/util/container_slist.c
index 1dd0344e4..144d352ce 100644
--- a/src/util/container_slist.c
+++ b/src/util/container_slist.c
@@ -27,6 +27,8 @@
27#include "platform.h" 27#include "platform.h"
28#include "gnunet_container_lib.h" 28#include "gnunet_container_lib.h"
29 29
30#define LOG(kind,...) GNUNET_log_from (kind, "util", __VA_ARGS__)
31
30/** 32/**
31 * Element in our linked list. 33 * Element in our linked list.
32 */ 34 */
@@ -108,21 +110,21 @@ struct GNUNET_CONTAINER_SList_Iterator
108 */ 110 */
109static struct GNUNET_CONTAINER_SList_Elem * 111static struct GNUNET_CONTAINER_SList_Elem *
110create_elem (enum GNUNET_CONTAINER_SListDisposition disp, const void *buf, 112create_elem (enum GNUNET_CONTAINER_SListDisposition disp, const void *buf,
111 size_t len) 113 size_t len)
112{ 114{
113 struct GNUNET_CONTAINER_SList_Elem *e; 115 struct GNUNET_CONTAINER_SList_Elem *e;
114 116
115 if (disp == GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT) 117 if (disp == GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT)
116 { 118 {
117 e = GNUNET_malloc (sizeof (struct GNUNET_CONTAINER_SList_Elem) + len); 119 e = GNUNET_malloc (sizeof (struct GNUNET_CONTAINER_SList_Elem) + len);
118 memcpy (&e[1], buf, len); 120 memcpy (&e[1], buf, len);
119 e->elem = (void *) &e[1]; 121 e->elem = (void *) &e[1];
120 } 122 }
121 else 123 else
122 { 124 {
123 e = GNUNET_malloc (sizeof (struct GNUNET_CONTAINER_SList_Elem)); 125 e = GNUNET_malloc (sizeof (struct GNUNET_CONTAINER_SList_Elem));
124 e->elem = (void *) buf; 126 e->elem = (void *) buf;
125 } 127 }
126 e->disp = disp; 128 e->disp = disp;
127 e->len = len; 129 e->len = len;
128 return e; 130 return e;
@@ -138,8 +140,8 @@ create_elem (enum GNUNET_CONTAINER_SListDisposition disp, const void *buf,
138 */ 140 */
139void 141void
140GNUNET_CONTAINER_slist_add (struct GNUNET_CONTAINER_SList *l, 142GNUNET_CONTAINER_slist_add (struct GNUNET_CONTAINER_SList *l,
141 enum GNUNET_CONTAINER_SListDisposition disp, 143 enum GNUNET_CONTAINER_SListDisposition disp,
142 const void *buf, size_t len) 144 const void *buf, size_t len)
143{ 145{
144 struct GNUNET_CONTAINER_SList_Elem *e; 146 struct GNUNET_CONTAINER_SList_Elem *e;
145 147
@@ -160,8 +162,8 @@ GNUNET_CONTAINER_slist_add (struct GNUNET_CONTAINER_SList *l,
160 */ 162 */
161void 163void
162GNUNET_CONTAINER_slist_add_end (struct GNUNET_CONTAINER_SList *l, 164GNUNET_CONTAINER_slist_add_end (struct GNUNET_CONTAINER_SList *l,
163 enum GNUNET_CONTAINER_SListDisposition disp, 165 enum GNUNET_CONTAINER_SListDisposition disp,
164 const void *buf, size_t len) 166 const void *buf, size_t len)
165{ 167{
166 struct GNUNET_CONTAINER_SList_Elem *e; 168 struct GNUNET_CONTAINER_SList_Elem *e;
167 169
@@ -182,7 +184,7 @@ GNUNET_CONTAINER_slist_add_end (struct GNUNET_CONTAINER_SList *l,
182 */ 184 */
183void 185void
184GNUNET_CONTAINER_slist_append (struct GNUNET_CONTAINER_SList *dst, 186GNUNET_CONTAINER_slist_append (struct GNUNET_CONTAINER_SList *dst,
185 struct GNUNET_CONTAINER_SList *src) 187 struct GNUNET_CONTAINER_SList *src)
186{ 188{
187 struct GNUNET_CONTAINER_SList_Iterator *i; 189 struct GNUNET_CONTAINER_SList_Iterator *i;
188 190
@@ -190,14 +192,15 @@ GNUNET_CONTAINER_slist_append (struct GNUNET_CONTAINER_SList *dst,
190 GNUNET_CONTAINER_slist_end (i) != GNUNET_YES; 192 GNUNET_CONTAINER_slist_end (i) != GNUNET_YES;
191 GNUNET_CONTAINER_slist_next (i)) 193 GNUNET_CONTAINER_slist_next (i))
192 194
193 { 195 {
194 GNUNET_CONTAINER_slist_add (dst, 196 GNUNET_CONTAINER_slist_add (dst,
195 (i->elem->disp == 197 (i->elem->disp ==
196 GNUNET_CONTAINER_SLIST_DISPOSITION_STATIC) ? 198 GNUNET_CONTAINER_SLIST_DISPOSITION_STATIC)
197 GNUNET_CONTAINER_SLIST_DISPOSITION_STATIC : 199 ? GNUNET_CONTAINER_SLIST_DISPOSITION_STATIC
198 GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, 200 :
199 i->elem->elem, i->elem->len); 201 GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT,
200 } 202 i->elem->elem, i->elem->len);
203 }
201 GNUNET_CONTAINER_slist_iter_destroy (i); 204 GNUNET_CONTAINER_slist_iter_destroy (i);
202} 205}
203 206
@@ -254,13 +257,13 @@ GNUNET_CONTAINER_slist_clear (struct GNUNET_CONTAINER_SList *l)
254 257
255 e = l->head; 258 e = l->head;
256 while (e != NULL) 259 while (e != NULL)
257 { 260 {
258 n = e->next; 261 n = e->next;
259 if (e->disp == GNUNET_CONTAINER_SLIST_DISPOSITION_DYNAMIC) 262 if (e->disp == GNUNET_CONTAINER_SLIST_DISPOSITION_DYNAMIC)
260 GNUNET_free (e->elem); 263 GNUNET_free (e->elem);
261 GNUNET_free (e); 264 GNUNET_free (e);
262 e = n; 265 e = n;
263 } 266 }
264 l->head = NULL; 267 l->head = NULL;
265 l->tail = NULL; 268 l->tail = NULL;
266 l->length = 0; 269 l->length = 0;
@@ -276,7 +279,7 @@ GNUNET_CONTAINER_slist_clear (struct GNUNET_CONTAINER_SList *l)
276 */ 279 */
277int 280int
278GNUNET_CONTAINER_slist_contains (const struct GNUNET_CONTAINER_SList *l, 281GNUNET_CONTAINER_slist_contains (const struct GNUNET_CONTAINER_SList *l,
279 const void *buf, size_t len) 282 const void *buf, size_t len)
280{ 283{
281 struct GNUNET_CONTAINER_SList_Elem *e; 284 struct GNUNET_CONTAINER_SList_Elem *e;
282 285
@@ -333,8 +336,8 @@ GNUNET_CONTAINER_slist_erase (struct GNUNET_CONTAINER_SList_Iterator *i)
333 */ 336 */
334void 337void
335GNUNET_CONTAINER_slist_insert (struct GNUNET_CONTAINER_SList_Iterator *before, 338GNUNET_CONTAINER_slist_insert (struct GNUNET_CONTAINER_SList_Iterator *before,
336 enum GNUNET_CONTAINER_SListDisposition disp, 339 enum GNUNET_CONTAINER_SListDisposition disp,
337 const void *buf, size_t len) 340 const void *buf, size_t len)
338{ 341{
339 struct GNUNET_CONTAINER_SList_Elem *e; 342 struct GNUNET_CONTAINER_SList_Elem *e;
340 343
@@ -387,7 +390,7 @@ GNUNET_CONTAINER_slist_end (struct GNUNET_CONTAINER_SList_Iterator *i)
387 */ 390 */
388void * 391void *
389GNUNET_CONTAINER_slist_get (const struct GNUNET_CONTAINER_SList_Iterator *i, 392GNUNET_CONTAINER_slist_get (const struct GNUNET_CONTAINER_SList_Iterator *i,
390 size_t * len) 393 size_t * len)
391{ 394{
392 if (len) 395 if (len)
393 *len = i->elem->len; 396 *len = i->elem->len;
@@ -399,7 +402,8 @@ GNUNET_CONTAINER_slist_get (const struct GNUNET_CONTAINER_SList_Iterator *i,
399 * @param i iterator 402 * @param i iterator
400 */ 403 */
401void 404void
402GNUNET_CONTAINER_slist_iter_destroy (struct GNUNET_CONTAINER_SList_Iterator *i) 405GNUNET_CONTAINER_slist_iter_destroy (struct GNUNET_CONTAINER_SList_Iterator
406 *i)
403{ 407{
404 GNUNET_free (i); 408 GNUNET_free (i);
405} 409}