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.c72
1 files changed, 35 insertions, 37 deletions
diff --git a/src/util/container_slist.c b/src/util/container_slist.c
index 2704713d4..7b85dc877 100644
--- a/src/util/container_slist.c
+++ b/src/util/container_slist.c
@@ -89,21 +89,21 @@ struct GNUNET_CONTAINER_SList
89 */ 89 */
90static struct GNUNET_CONTAINER_SList_Elem * 90static struct GNUNET_CONTAINER_SList_Elem *
91create_elem (enum GNUNET_CONTAINER_SListDisposition disp, const void *buf, 91create_elem (enum GNUNET_CONTAINER_SListDisposition disp, const void *buf,
92 size_t len) 92 size_t len)
93{ 93{
94 struct GNUNET_CONTAINER_SList_Elem *e; 94 struct GNUNET_CONTAINER_SList_Elem *e;
95 95
96 if (disp == GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT) 96 if (disp == GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT)
97 { 97 {
98 e = GNUNET_malloc (sizeof (struct GNUNET_CONTAINER_SList_Elem) + len); 98 e = GNUNET_malloc (sizeof (struct GNUNET_CONTAINER_SList_Elem) + len);
99 memcpy (&e[1], buf, len); 99 memcpy (&e[1], buf, len);
100 e->elem = (void *) &e[1]; 100 e->elem = (void *) &e[1];
101 } 101 }
102 else 102 else
103 { 103 {
104 e = GNUNET_malloc (sizeof (struct GNUNET_CONTAINER_SList_Elem)); 104 e = GNUNET_malloc (sizeof (struct GNUNET_CONTAINER_SList_Elem));
105 e->elem = (void *) buf; 105 e->elem = (void *) buf;
106 } 106 }
107 e->disp = disp; 107 e->disp = disp;
108 e->len = len; 108 e->len = len;
109 return e; 109 return e;
@@ -119,8 +119,8 @@ create_elem (enum GNUNET_CONTAINER_SListDisposition disp, const void *buf,
119 */ 119 */
120void 120void
121GNUNET_CONTAINER_slist_add (struct GNUNET_CONTAINER_SList *l, 121GNUNET_CONTAINER_slist_add (struct GNUNET_CONTAINER_SList *l,
122 enum GNUNET_CONTAINER_SListDisposition disp, 122 enum GNUNET_CONTAINER_SListDisposition disp,
123 const void *buf, size_t len) 123 const void *buf, size_t len)
124{ 124{
125 struct GNUNET_CONTAINER_SList_Elem *e; 125 struct GNUNET_CONTAINER_SList_Elem *e;
126 126
@@ -141,8 +141,8 @@ GNUNET_CONTAINER_slist_add (struct GNUNET_CONTAINER_SList *l,
141 */ 141 */
142void 142void
143GNUNET_CONTAINER_slist_add_end (struct GNUNET_CONTAINER_SList *l, 143GNUNET_CONTAINER_slist_add_end (struct GNUNET_CONTAINER_SList *l,
144 enum GNUNET_CONTAINER_SListDisposition disp, 144 enum GNUNET_CONTAINER_SListDisposition disp,
145 const void *buf, size_t len) 145 const void *buf, size_t len)
146{ 146{
147 struct GNUNET_CONTAINER_SList_Elem *e; 147 struct GNUNET_CONTAINER_SList_Elem *e;
148 148
@@ -163,7 +163,7 @@ GNUNET_CONTAINER_slist_add_end (struct GNUNET_CONTAINER_SList *l,
163 */ 163 */
164void 164void
165GNUNET_CONTAINER_slist_append (struct GNUNET_CONTAINER_SList *dst, 165GNUNET_CONTAINER_slist_append (struct GNUNET_CONTAINER_SList *dst,
166 struct GNUNET_CONTAINER_SList *src) 166 struct GNUNET_CONTAINER_SList *src)
167{ 167{
168 struct GNUNET_CONTAINER_SList_Iterator i; 168 struct GNUNET_CONTAINER_SList_Iterator i;
169 169
@@ -171,15 +171,14 @@ GNUNET_CONTAINER_slist_append (struct GNUNET_CONTAINER_SList *dst,
171 GNUNET_CONTAINER_slist_end (&i) != GNUNET_YES; 171 GNUNET_CONTAINER_slist_end (&i) != GNUNET_YES;
172 GNUNET_CONTAINER_slist_next (&i)) 172 GNUNET_CONTAINER_slist_next (&i))
173 173
174 { 174 {
175 GNUNET_CONTAINER_slist_add (dst, 175 GNUNET_CONTAINER_slist_add (dst,
176 (i.elem->disp == 176 (i.elem->disp ==
177 GNUNET_CONTAINER_SLIST_DISPOSITION_STATIC) 177 GNUNET_CONTAINER_SLIST_DISPOSITION_STATIC) ?
178 ? GNUNET_CONTAINER_SLIST_DISPOSITION_STATIC 178 GNUNET_CONTAINER_SLIST_DISPOSITION_STATIC :
179 : 179 GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT,
180 GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, 180 i.elem->elem, i.elem->len);
181 i.elem->elem, i.elem->len); 181 }
182 }
183 GNUNET_CONTAINER_slist_iter_destroy (&i); 182 GNUNET_CONTAINER_slist_iter_destroy (&i);
184} 183}
185 184
@@ -236,13 +235,13 @@ GNUNET_CONTAINER_slist_clear (struct GNUNET_CONTAINER_SList *l)
236 235
237 e = l->head; 236 e = l->head;
238 while (e != NULL) 237 while (e != NULL)
239 { 238 {
240 n = e->next; 239 n = e->next;
241 if (e->disp == GNUNET_CONTAINER_SLIST_DISPOSITION_DYNAMIC) 240 if (e->disp == GNUNET_CONTAINER_SLIST_DISPOSITION_DYNAMIC)
242 GNUNET_free (e->elem); 241 GNUNET_free (e->elem);
243 GNUNET_free (e); 242 GNUNET_free (e);
244 e = n; 243 e = n;
245 } 244 }
246 l->head = NULL; 245 l->head = NULL;
247 l->tail = NULL; 246 l->tail = NULL;
248 l->length = 0; 247 l->length = 0;
@@ -258,7 +257,7 @@ GNUNET_CONTAINER_slist_clear (struct GNUNET_CONTAINER_SList *l)
258 */ 257 */
259int 258int
260GNUNET_CONTAINER_slist_contains (const struct GNUNET_CONTAINER_SList *l, 259GNUNET_CONTAINER_slist_contains (const struct GNUNET_CONTAINER_SList *l,
261 const void *buf, size_t len) 260 const void *buf, size_t len)
262{ 261{
263 struct GNUNET_CONTAINER_SList_Elem *e; 262 struct GNUNET_CONTAINER_SList_Elem *e;
264 263
@@ -315,8 +314,8 @@ GNUNET_CONTAINER_slist_erase (struct GNUNET_CONTAINER_SList_Iterator *i)
315 */ 314 */
316void 315void
317GNUNET_CONTAINER_slist_insert (struct GNUNET_CONTAINER_SList_Iterator *before, 316GNUNET_CONTAINER_slist_insert (struct GNUNET_CONTAINER_SList_Iterator *before,
318 enum GNUNET_CONTAINER_SListDisposition disp, 317 enum GNUNET_CONTAINER_SListDisposition disp,
319 const void *buf, size_t len) 318 const void *buf, size_t len)
320{ 319{
321 struct GNUNET_CONTAINER_SList_Elem *e; 320 struct GNUNET_CONTAINER_SList_Elem *e;
322 321
@@ -369,7 +368,7 @@ GNUNET_CONTAINER_slist_end (struct GNUNET_CONTAINER_SList_Iterator *i)
369 */ 368 */
370void * 369void *
371GNUNET_CONTAINER_slist_get (const struct GNUNET_CONTAINER_SList_Iterator *i, 370GNUNET_CONTAINER_slist_get (const struct GNUNET_CONTAINER_SList_Iterator *i,
372 size_t * len) 371 size_t * len)
373{ 372{
374 if (len) 373 if (len)
375 *len = i->elem->len; 374 *len = i->elem->len;
@@ -381,8 +380,7 @@ GNUNET_CONTAINER_slist_get (const struct GNUNET_CONTAINER_SList_Iterator *i,
381 * @param i iterator 380 * @param i iterator
382 */ 381 */
383void 382void
384GNUNET_CONTAINER_slist_iter_destroy (struct GNUNET_CONTAINER_SList_Iterator 383GNUNET_CONTAINER_slist_iter_destroy (struct GNUNET_CONTAINER_SList_Iterator *i)
385 *i)
386{ 384{
387} 385}
388 386