summaryrefslogtreecommitdiffhomepage
path: root/libbb/llist.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbb/llist.c')
-rw-r--r--libbb/llist.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/libbb/llist.c b/libbb/llist.c
new file mode 100644
index 000000000..cb87176c5
--- /dev/null
+++ b/libbb/llist.c
@@ -0,0 +1,43 @@
+#include <stdlib.h>
+#include <string.h>
+#include "unarchive.h"
+#include "libbb.h"
+
+#ifdef L_llist_add_to
+extern llist_t *llist_add_to(llist_t *old_head, char *new_item)
+{
+ llist_t *new_head;
+
+ new_head = xmalloc(sizeof(llist_t));
+ new_head->data = new_item;
+ new_head->link = old_head;
+
+ return (new_head);
+}
+#endif
+
+#ifdef L_llist_add_to_end
+extern llist_t *llist_add_to_end(llist_t *list_head, char *data)
+{
+ llist_t *new_item, *tmp, *prev;
+
+ new_item = xmalloc(sizeof(llist_t));
+ new_item->data = data;
+ new_item->link = NULL;
+
+ prev = NULL;
+ tmp = list_head;
+ while (tmp) {
+ prev = tmp;
+ tmp = tmp->link;
+ }
+ if (prev) {
+ prev->link = new_item;
+ } else {
+ list_head = new_item;
+ }
+
+ return (list_head);
+}
+#endif
+