diff options
Diffstat (limited to 'src/util/container_slist.c')
-rw-r--r-- | src/util/container_slist.c | 74 |
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 | */ |
109 | static struct GNUNET_CONTAINER_SList_Elem * | 111 | static struct GNUNET_CONTAINER_SList_Elem * |
110 | create_elem (enum GNUNET_CONTAINER_SListDisposition disp, const void *buf, | 112 | create_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 | */ |
139 | void | 141 | void |
140 | GNUNET_CONTAINER_slist_add (struct GNUNET_CONTAINER_SList *l, | 142 | GNUNET_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 | */ |
161 | void | 163 | void |
162 | GNUNET_CONTAINER_slist_add_end (struct GNUNET_CONTAINER_SList *l, | 164 | GNUNET_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 | */ |
183 | void | 185 | void |
184 | GNUNET_CONTAINER_slist_append (struct GNUNET_CONTAINER_SList *dst, | 186 | GNUNET_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 | */ |
277 | int | 280 | int |
278 | GNUNET_CONTAINER_slist_contains (const struct GNUNET_CONTAINER_SList *l, | 281 | GNUNET_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 | */ |
334 | void | 337 | void |
335 | GNUNET_CONTAINER_slist_insert (struct GNUNET_CONTAINER_SList_Iterator *before, | 338 | GNUNET_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 | */ |
388 | void * | 391 | void * |
389 | GNUNET_CONTAINER_slist_get (const struct GNUNET_CONTAINER_SList_Iterator *i, | 392 | GNUNET_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 | */ |
401 | void | 404 | void |
402 | GNUNET_CONTAINER_slist_iter_destroy (struct GNUNET_CONTAINER_SList_Iterator *i) | 405 | GNUNET_CONTAINER_slist_iter_destroy (struct GNUNET_CONTAINER_SList_Iterator |
406 | *i) | ||
403 | { | 407 | { |
404 | GNUNET_free (i); | 408 | GNUNET_free (i); |
405 | } | 409 | } |