aboutsummaryrefslogtreecommitdiff
path: root/src/tagTracker.c
diff options
context:
space:
mode:
authorWarren Dukes <warren.dukes@gmail.com>2004-11-15 19:29:20 +0000
committerWarren Dukes <warren.dukes@gmail.com>2004-11-15 19:29:20 +0000
commitb00555667522f812440572016f3c1237941a63b2 (patch)
tree59e5acb5ab6c27bf2807d57d36ea53b7c5409b21 /src/tagTracker.c
parentf3e8d59d5c584f5925a8b23919aaa5b5c954cf85 (diff)
this shit really needs to be cleaned up, but its good enough for testing,
intelligently use memmove, when inserting nodes in a sorted list git-svn-id: https://svn.musicpd.org/mpd/trunk@2677 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to 'src/tagTracker.c')
-rw-r--r--src/tagTracker.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/tagTracker.c b/src/tagTracker.c
index be25751b..4e310d8b 100644
--- a/src/tagTracker.c
+++ b/src/tagTracker.c
@@ -23,6 +23,7 @@ typedef struct tagTrackerItem {
char * getTagItemString(int type, char * string) {
ListNode * node;
+ int pos;
/*if(type == TAG_ITEM_TITLE) return strdup(string);*/
@@ -31,15 +32,16 @@ char * getTagItemString(int type, char * string) {
sortList(tagLists[type]);
}
- if(findNodeInList(tagLists[type], string, &node)) {
+ if(findNodeInList(tagLists[type], string, &node, &pos)) {
((TagTrackerItem *)node->data)->count++;
}
else {
TagTrackerItem * item = malloc(sizeof(TagTrackerItem));
item->count = 1;
item->visited = 0;
- node = insertInListBeforeNode(tagLists[type], node, string,
- item);
+ node = insertInListBeforeNode(tagLists[type], node, pos,
+ string, item);
+
}
return node->key;
@@ -47,6 +49,7 @@ char * getTagItemString(int type, char * string) {
void removeTagItemString(int type, char * string) {
ListNode * node;
+ int pos;
assert(string);
@@ -58,7 +61,7 @@ void removeTagItemString(int type, char * string) {
return;
}*/
- if(findNodeInList(tagLists[type], string, &node)) {
+ if(findNodeInList(tagLists[type], string, &node, &pos)) {
TagTrackerItem * item = node->data;
item->count--;
if(item->count <= 0) deleteNodeFromList(tagLists[type], node);
@@ -126,23 +129,23 @@ void resetVisitedFlagsInTagTracker(int type) {
}
int wasVisitedInTagTracker(int type, char * str) {
- ListNode * node;
+ TagTrackerItem * item;
if(!tagLists[type]) return 0;
- if(!findNodeInList(tagLists[type], str, &node)) return 0;
+ if(!findInList(tagLists[type], str, &item)) return 0;
- return ((TagTrackerItem *)node->data)->visited;
+ return item->visited;
}
void visitInTagTracker(int type, char * str) {
- ListNode * node;
+ TagTrackerItem * item;
if(!tagLists[type]) return;
- if(!findNodeInList(tagLists[type], str, &node)) return;
+ if(!findInList(tagLists[type], str, &item)) return;
- ((TagTrackerItem *)node->data)->visited = 1;
+ item->visited = 1;
}
void printVisitedInTagTracker(FILE * fp, int type) {