aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/list.c15
-rw-r--r--src/list.h2
2 files changed, 14 insertions, 3 deletions
diff --git a/src/list.c b/src/list.c
index 133637b..226985e 100644
--- a/src/list.c
+++ b/src/list.c
@@ -28,8 +28,19 @@ int list_sort ( list_element_t** _root ) {
return -1;
}
-int list_length ( list_element_t* _root ) {
- return -1;
+int list_length ( list_element_t** _root ) {
+ list_element_t** iter = _root;
+ int ret = 0;
+
+ if( !_root )
+ return -1;
+
+ while(*iter) {
+ ret ++;
+ iter = & (*iter)->next;
+ }
+
+ return ret;
}
void* list_pop_front ( list_element_t** _root ) {
diff --git a/src/list.h b/src/list.h
index 71594ad..1359955 100644
--- a/src/list.h
+++ b/src/list.h
@@ -20,6 +20,6 @@ int list_add( list_element_t** _root, void* _data );
int list_sort ( list_element_t** _root );
-int list_length ( list_element_t* _root );
+int list_length ( list_element_t** _root );
void* list_pop_front ( list_element_t** _root );