aboutsummaryrefslogtreecommitdiffstats
path: root/src/tagTracker.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tagTracker.c')
-rw-r--r--src/tagTracker.c43
1 files changed, 30 insertions, 13 deletions
diff --git a/src/tagTracker.c b/src/tagTracker.c
index b7608ed97..e2594341d 100644
--- a/src/tagTracker.c
+++ b/src/tagTracker.c
@@ -24,8 +24,6 @@ typedef struct tagTrackerItem {
char * getTagItemString(int type, char * string) {
ListNode * node;
- if(type == TAG_ITEM_TITLE) return strdup(string);
-
if(tagLists[type] == NULL) {
tagLists[type] = makeList(free, 1);
}
@@ -48,11 +46,6 @@ void removeTagItemString(int type, char * string) {
assert(string);
- if(type == TAG_ITEM_TITLE) {
- free(string);
- return;
- }
-
assert(tagLists[type]);
if(tagLists[type] == NULL) return;
@@ -124,9 +117,7 @@ void resetVisitedFlagsInTagTracker(int type) {
}
int wasVisitedInTagTracker(int type, char * str) {
- int ret;
ListNode * node;
- TagTrackerItem * item;
if(!tagLists[type]) return 0;
@@ -134,9 +125,35 @@ int wasVisitedInTagTracker(int type, char * str) {
if(!node) return 0;
- item = node->data;
- ret = item->visited;
- item->visited = 1;
+ return ((TagTrackerItem *)node->data)->visited;
+}
+
+void visitInTagTracker(int type, char * str) {
+ ListNode * node;
+
+ if(!tagLists[type]) return;
+
+ node = findNodeInList(tagLists[type], str);
- return ret;
+ if(!node) return;
+
+ ((TagTrackerItem *)node->data)->visited = 1;
}
+
+void printVisitedInTagTracker(FILE * fp, int type) {
+ ListNode * node;
+ TagTrackerItem * item;
+
+ if(!tagLists[type]) return;
+
+ node = tagLists[type]->firstNode;
+
+ while(node) {
+ item = node->data;
+ if(item->visited) {
+ myfprintf(fp, "%s: %s\n", mpdTagItemKeys[type],
+ node->key);
+ }
+ node = node->nextNode;
+ }
+