From 408b92b168078a338f5fc2c2f95f39f8aa8e5f67 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Wed, 26 Apr 2017 09:44:38 +0100 Subject: 41008: Handle expansions for precommand modifiers --- Src/linklist.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'Src/linklist.c') diff --git a/Src/linklist.c b/Src/linklist.c index 3aa8125d9..85d9bb367 100644 --- a/Src/linklist.c +++ b/Src/linklist.c @@ -347,6 +347,35 @@ newsizedlist(int size) return list; } +/* + * Join two linked lists. Neither may be null, though either + * may be empty. + * + * It is assumed the pieces come from the heap, but if not it is + * safe to free LinkList second. + */ + +/**/ +mod_export LinkList +joinlists(LinkList first, LinkList second) +{ + LinkNode moveme = firstnode(second); + if (moveme) { + if (firstnode(first)) { + LinkNode anchor = lastnode(first); + anchor->next = moveme; + moveme->prev = anchor; + } else { + first->list.first = moveme; + moveme->prev = &first->node; + } + first->list.last = second->list.last; + + second->list.first = second->list.last = NULL; + } + return first; +} + /* * Return the node whose data is the pointer "dat", else NULL. * Can be used as a boolean test. -- cgit 1.4.1