From 631ec626b0606a20a091a2a1aaae4815942ad28d Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Thu, 20 May 2004 09:54:25 +0000
Subject: [PATCH] Renamed strListAlloc() to strListInit(). Multiple-node add
 functions now return number of nodes added.

---
 src/xpdev/link_list.c | 46 ++++++++++++++++++++++---------------------
 src/xpdev/link_list.h | 10 +++++-----
 2 files changed, 29 insertions(+), 27 deletions(-)

diff --git a/src/xpdev/link_list.c b/src/xpdev/link_list.c
index abb02dc071..7b63bc60d4 100644
--- a/src/xpdev/link_list.c
+++ b/src/xpdev/link_list.c
@@ -136,7 +136,7 @@ str_list_t listStringList(const link_list_t* list)
 	if(list==NULL)
 		return(NULL);
 
-	if((str_list=strListAlloc())==NULL)
+	if((str_list=strListInit())==NULL)
 		return(NULL);
 
 	for(node=list->first; node!=NULL; node=node->next) {
@@ -155,7 +155,7 @@ str_list_t listSubStringList(const list_node_t* node, long max)
 	if(node==NULL)
 		return(NULL);
 
-	if((str_list=strListAlloc())==NULL)
+	if((str_list=strListInit())==NULL)
 		return(NULL);
 
 	for(count=0; count<max && node!=NULL; node=node->next) {
@@ -289,19 +289,19 @@ list_node_t* listAddNode(link_list_t* list, void* data, list_node_t* after)
 	return(list_add_node(list,node,after));
 }
 
-list_node_t* listAddNodes(link_list_t* list, void** data, list_node_t* after)
+long listAddNodes(link_list_t* list, void** data, list_node_t* after)
 {
-	size_t			i;
+	long			i;
 	list_node_t*	node=NULL;
 
 	if(data==NULL)
-		return(NULL);
+		return(-1);
 
 	for(i=0;data[i];i++)
 		if((node=listAddNode(list,data[i],node==NULL ? after:node))==NULL)
-			return(NULL);
+			return(i);
 
-	return(node);
+	return(i);
 }
 
 list_node_t* listAddNodeData(link_list_t* list, const void* data, size_t length, list_node_t* after)
@@ -346,51 +346,53 @@ list_node_t* listAddNodeString(link_list_t* list, const char* str, list_node_t*
 	return(node);
 }
 
-list_node_t* listAddStringList(link_list_t* list, str_list_t str_list, list_node_t* after)
+long listAddStringList(link_list_t* list, str_list_t str_list, list_node_t* after)
 {
-	size_t	i;
+	long			i;
 	list_node_t*	node=NULL;
 
 	if(str_list==NULL)
-		return(NULL);
+		return(-1);
 
 	for(i=0;str_list[i];i++)
 		if((node=listAddNodeString(list,str_list[i],node==NULL ? after:node))==NULL)
-			return(NULL);
+			return(i);
 
-	return(node);
+	return(i);
 }
 
-list_node_t* listAddNodeList(link_list_t* list, const link_list_t* src, list_node_t* after)
+long listAddNodeList(link_list_t* list, const link_list_t* src, list_node_t* after)
 {
+	long			count=0;
 	list_node_t*	node=NULL;
 	list_node_t*	src_node;
 
 	if(src==NULL)
-		return(NULL);
+		return(-1);
 
-	for(src_node=src->first; src_node!=NULL; src_node=src_node->next) {
+	for(src_node=src->first; src_node!=NULL; src_node=src_node->next, count++) {
 		if((node=listAddNode(list, src_node->data, node==NULL ? after:node))==NULL)
-			return(NULL);
+			return(count);
 		node->flags = src_node->flags;
 	}
 
-	return(node);
+	return(count);
 }
 
-list_node_t* listMerge(link_list_t* list, const link_list_t* src, list_node_t* after)
+long listMerge(link_list_t* list, const link_list_t* src, list_node_t* after)
 {
+	long			count=0;
 	list_node_t*	node=NULL;
 	list_node_t*	src_node;
 
 	if(src==NULL)
-		return(NULL);
+		return(-1);
 
-	for(src_node=src->first; src_node!=NULL; src_node=src_node->next)
+	for(src_node=src->first; src_node!=NULL; src_node=src_node->next, count++)
 		if((node=list_add_node(list, src_node, node==NULL ? after:node))==NULL)
-			return(NULL);
+			return(count);
 
-	return(node);
+	return(count);
 }
 
 link_list_t* listExtract(link_list_t* dest_list, const list_node_t* node, long max)
diff --git a/src/xpdev/link_list.h b/src/xpdev/link_list.h
index f05ae6b647..4231537243 100644
--- a/src/xpdev/link_list.h
+++ b/src/xpdev/link_list.h
@@ -97,8 +97,8 @@ void*			listNodeData(const list_node_t*);
 /* Add node to list, returns pointer to new node or NULL on error */
 list_node_t*	listAddNode(link_list_t*, void* data, list_node_t* after /* NULL=insert */);
 
-/* Add array of node data to list, returns pointer to last new node or NULL on error */
-list_node_t*	listAddNodes(link_list_t*, void** data, list_node_t* after /* NULL=insert */);
+/* Add array of node data to list, returns number of nodes added (or negative on error) */
+long			listAddNodes(link_list_t*, void** data, list_node_t* after /* NULL=insert */);
 
 /* Add node to list, allocating and copying the data for the node */
 list_node_t*	listAddNodeData(link_list_t*, const void* data, size_t length, list_node_t* after);
@@ -107,14 +107,14 @@ list_node_t*	listAddNodeData(link_list_t*, const void* data, size_t length, list
 list_node_t*	listAddNodeString(link_list_t*, const char* str, list_node_t* after);
 
 /* Add a list of strings to the linked list, allocating and copying each */
-list_node_t*	listAddStringList(link_list_t*, str_list_t, list_node_t* after);
+long			listAddStringList(link_list_t*, str_list_t, list_node_t* after);
 
 /* Add a list of nodes from a source linked list */
-list_node_t*	listAddNodeList(link_list_t*, const link_list_t* src, list_node_t* after); 
+long			listAddNodeList(link_list_t*, const link_list_t* src, list_node_t* after); 
 
 /* Merge a source linked list into the destination linked list */
 /* after merging, the nodes in the source linked list should not be modified or freed */
-list_node_t*	listMerge(link_list_t* dest, const link_list_t* src, list_node_t* after);
+long			listMerge(link_list_t* dest, const link_list_t* src, list_node_t* after);
 
 /* Convenience macros for pushing, popping, and inserting nodes */
 #define	listPushNode(list, data)				listAddNode(list, data, listLastNode(list))
-- 
GitLab