summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWarren Dukes <warren.dukes@gmail.com>2004-04-10 02:55:27 +0000
committerWarren Dukes <warren.dukes@gmail.com>2004-04-10 02:55:27 +0000
commit918dc2ff22e13808665b589e6740f45256e73c97 (patch)
tree7f694c3312b7115d869f50ad3f344a2e04e36672 /src
parent9b5f32c9e542bc8d67934866a58af37a12fb18fe (diff)
ideas on how to make readDirectoryInfo and readSongInfo deal with already
existing db stuff, and implement a new List function that will be very useful: insertInListBeforeNode() git-svn-id: https://svn.musicpd.org/mpd/trunk@657 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to 'src')
-rw-r--r--src/list.c45
-rw-r--r--src/list.h3
2 files changed, 48 insertions, 0 deletions
diff --git a/src/list.c b/src/list.c
index 8ce872fc2..d14f5b874 100644
--- a/src/list.c
+++ b/src/list.c
@@ -56,6 +56,51 @@ List * makeList(ListFreeDataFunc * freeDataFunc) {
return list;
}
+int insertInListBeforeNode(List * list, ListNode * beforeNode, char * key,
+ void * data)
+{
+ ListNode * node;
+
+ assert(list!=NULL);
+ assert(key!=NULL);
+ /*assert(data!=NULL);*/
+
+ node = malloc(sizeof(ListNode));
+ assert(node!=NULL);
+
+ if(list->nodesArray) freeListNodesArray(list);
+
+ if(beforeNode==NULL) beforeNode = list->firstNode;
+
+ node->nextNode = beforeNode;
+ if(beforeNode==list->firstNode) {
+ if(list->firstNode==NULL) {
+ assert(list->lastNode==NULL);
+ list->lastNode = node;
+ }
+ else {
+ assert(list->lastNode!=NULL);
+ assert(list->lastNode->nextNode==NULL);
+ list->firstNode->prevNode = node;
+ }
+ node->prevNode = NULL;
+ list->firstNode = node;
+ }
+ else {
+ node->prevNode = beforeNode->prevNode;
+ beforeNode->prevNode = node;
+ }
+
+ node->key = malloc((strlen(key)+1)*sizeof(char));
+ assert(node->key!=NULL);
+ strcpy(node->key,key);
+ node->data = data;
+
+ list->numberOfNodes++;
+
+ return 1;
+}
+
int insertInList(List * list,char * key,void * data) {
ListNode * node;
diff --git a/src/list.h b/src/list.h
index 4ae32160a..14f7f396b 100644
--- a/src/list.h
+++ b/src/list.h
@@ -69,6 +69,9 @@ List * makeList(ListFreeDataFunc * freeDataFunc);
*/
int insertInList(List * list,char * key,void * data);
+int insertInListBeforeNode(List * list, ListNode * beforeNode, char * key,
+ void * data);
+
int insertInListWithoutKey(List * list,void * data);
/* deletes the first node in the list with the key _key_