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
This commit is contained in:
45
src/list.c
45
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;
|
||||
|
||||
|
@@ -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_
|
||||
|
Reference in New Issue
Block a user