[PATCH 1/2] Implement llist_size() - count elements in a linked list

Bartosz Golaszewski bartekgola at gmail.com
Wed Jun 11 21:07:00 UTC 2014


Signed-off-by: Bartosz Golaszewski <bartekgola at gmail.com>
---
 include/libbb.h |  1 +
 libbb/llist.c   | 13 +++++++++++++
 2 files changed, 14 insertions(+)

diff --git a/include/libbb.h b/include/libbb.h
index a1a0dc1..42fa30a 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -1052,6 +1052,7 @@ void llist_unlink(llist_t **head, llist_t *elm) FAST_FUNC;
 void llist_free(llist_t *elm, void (*freeit)(void *data)) FAST_FUNC;
 llist_t *llist_rev(llist_t *list) FAST_FUNC;
 llist_t *llist_find_str(llist_t *first, const char *str) FAST_FUNC;
+size_t llist_size(llist_t *list) FAST_FUNC;
 /* BTW, surprisingly, changing API to
  *   llist_t *llist_add_to(llist_t *old_head, void *data)
  * etc does not result in smaller code... */
diff --git a/libbb/llist.c b/libbb/llist.c
index 032e9fa..e2d86b0 100644
--- a/libbb/llist.c
+++ b/libbb/llist.c
@@ -96,3 +96,16 @@ llist_t* FAST_FUNC llist_find_str(llist_t *list, const char *str)
 	}
 	return list;
 }
+
+/* Count elements in the list. */
+size_t FAST_FUNC llist_size(llist_t *list)
+{
+	size_t size = 0;
+
+	while (list) {
+		list = list->link;
+		++size;
+	}
+
+	return size;
+}
-- 
1.9.1



More information about the busybox mailing list