aboutsummaryrefslogtreecommitdiff
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 @@
1#include <stdlib.h>
2#include <string.h>
3#include "unarchive.h"
4#include "libbb.h"
5
6#ifdef L_llist_add_to
7extern llist_t *llist_add_to(llist_t *old_head, char *new_item)
8{
9 llist_t *new_head;
10
11 new_head = xmalloc(sizeof(llist_t));
12 new_head->data = new_item;
13 new_head->link = old_head;
14
15 return (new_head);
16}
17#endif
18
19#ifdef L_llist_add_to_end
20extern llist_t *llist_add_to_end(llist_t *list_head, char *data)
21{
22 llist_t *new_item, *tmp, *prev;
23
24 new_item = xmalloc(sizeof(llist_t));
25 new_item->data = data;
26 new_item->link = NULL;
27
28 prev = NULL;
29 tmp = list_head;
30 while (tmp) {
31 prev = tmp;
32 tmp = tmp->link;
33 }
34 if (prev) {
35 prev->link = new_item;
36 } else {
37 list_head = new_item;
38 }
39
40 return (list_head);
41}
42#endif
43