annotate Plugins/General/scrobbler/queue.c @ 1176:6549a4c58e15 trunk

[svn] - grr
author nenolod
date Sun, 11 Jun 2006 20:29:00 -0700
parents 99382cddf771
children fc478bfe6fe6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
688
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
1 #include <stdio.h>
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
2 #include <stdlib.h>
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
3 #include <string.h>
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
4 #include <curl/curl.h>
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
5 #include "tags/include/tags.h"
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
6 #include "queue.h"
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
7 #include "fmt.h"
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
8
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
9 static item_t *q_queue = NULL;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
10 static item_t *q_queue_last = NULL;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
11 static int q_nitems;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
12
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
13 static void q_item_free(item_t *item)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
14 {
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
15 if (item == NULL)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
16 return;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
17 curl_free(item->artist);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
18 curl_free(item->title);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
19 curl_free(item->utctime);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
20 curl_free(item->mb);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
21 curl_free(item->album);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
22 free(item);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
23 }
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
24
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
25 void q_put(metatag_t *meta, int len)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
26 {
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
27 item_t *item;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
28
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
29 item = malloc(sizeof(item_t));
700
99382cddf771 [svn] Fixes for all warnings (except 3 spurious GCC 4.0 ones, upgrade to 4.1 if you see them) and a performance increase. By external contributor Diego "FlameEyes" Petteno (Gentoo).
chainsaw
parents: 688
diff changeset
30 item->artist = fmt_escape((char*)meta->artist);
99382cddf771 [svn] Fixes for all warnings (except 3 spurious GCC 4.0 ones, upgrade to 4.1 if you see them) and a performance increase. By external contributor Diego "FlameEyes" Petteno (Gentoo).
chainsaw
parents: 688
diff changeset
31 item->title = fmt_escape((char*)meta->title);
688
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
32 item->utctime = fmt_escape(fmt_timestr(time(NULL), 1));
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
33 snprintf(item->len, sizeof(item->len), "%d", len);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
34 if(meta->mb == NULL)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
35 item->mb = fmt_escape("");
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
36 else
700
99382cddf771 [svn] Fixes for all warnings (except 3 spurious GCC 4.0 ones, upgrade to 4.1 if you see them) and a performance increase. By external contributor Diego "FlameEyes" Petteno (Gentoo).
chainsaw
parents: 688
diff changeset
37 item->mb = fmt_escape((char*)meta->mb);
688
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
38 if(meta->album == NULL)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
39 item->album = fmt_escape("");
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
40 else
700
99382cddf771 [svn] Fixes for all warnings (except 3 spurious GCC 4.0 ones, upgrade to 4.1 if you see them) and a performance increase. By external contributor Diego "FlameEyes" Petteno (Gentoo).
chainsaw
parents: 688
diff changeset
41 item->album = fmt_escape((char*)meta->album);
688
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
42
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
43 q_nitems++;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
44
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
45 item->next = NULL;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
46
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
47 if(q_queue_last == NULL)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
48 q_queue = q_queue_last = item;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
49 else
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
50 {
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
51 q_queue_last->next = item;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
52 q_queue_last = item;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
53 }
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
54 }
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
55
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
56 item_t *q_put2(char *artist, char *title, char *len, char *time,
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
57 char *album, char *mb)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
58 {
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
59 char *temp = NULL;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
60 item_t *item;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
61
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
62 item = calloc(1, sizeof(item_t));
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
63 temp = fmt_unescape(artist);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
64 item->artist = fmt_escape(temp);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
65 curl_free(temp);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
66 temp = fmt_unescape(title);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
67 item->title = fmt_escape(temp);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
68 curl_free(temp);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
69 memcpy(item->len, len, sizeof(len));
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
70 temp = fmt_unescape(time);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
71 item->utctime = fmt_escape(temp);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
72 curl_free(temp);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
73 temp = fmt_unescape(album);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
74 item->album = fmt_escape(temp);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
75 curl_free(temp);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
76 temp = fmt_unescape(mb);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
77 item->mb = fmt_escape(temp);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
78 curl_free(temp);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
79
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
80 q_nitems++;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
81
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
82 item->next = NULL;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
83 if(q_queue_last == NULL)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
84 q_queue = q_queue_last = item;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
85 else
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
86 {
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
87 q_queue_last->next = item;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
88 q_queue_last = item;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
89 }
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
90
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
91 return item;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
92 }
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
93
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
94 item_t *q_peek(void)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
95 {
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
96 if (q_nitems == 0)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
97 return NULL;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
98 return q_queue;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
99 }
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
100
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
101 item_t *q_peekall(int rewind)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
102 {
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
103 static item_t *citem = NULL;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
104 item_t *temp_item;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
105
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
106 if (rewind) {
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
107 citem = q_queue;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
108 return NULL;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
109 }
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
110
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
111 temp_item = citem;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
112
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
113 if(citem != NULL)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
114 citem = citem->next;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
115
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
116 return temp_item;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
117 }
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
118
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
119 int q_get(void)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
120 {
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
121 item_t *item;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
122
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
123 if (q_nitems == 0)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
124 return 0;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
125
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
126 item = q_queue;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
127
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
128 if(item == NULL)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
129 return 0;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
130
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
131 q_nitems--;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
132 q_queue = q_queue->next;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
133
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
134 q_item_free(item);
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
135
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
136 if (q_nitems == 0)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
137 {
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
138 q_queue_last = NULL;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
139 return 0;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
140 }
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
141
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
142 return -1;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
143 }
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
144
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
145 void q_free(void)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
146 {
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
147 while (q_get());
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
148 }
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
149
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
150 int q_len(void)
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
151 {
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
152 return q_nitems;
cc1969408403 [svn] - add scrobbler support
nenolod
parents:
diff changeset
153 }