Mercurial > audlegacy
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 |
rev | line source |
---|---|
688 | 1 #include <stdio.h> |
2 #include <stdlib.h> | |
3 #include <string.h> | |
4 #include <curl/curl.h> | |
5 #include "tags/include/tags.h" | |
6 #include "queue.h" | |
7 #include "fmt.h" | |
8 | |
9 static item_t *q_queue = NULL; | |
10 static item_t *q_queue_last = NULL; | |
11 static int q_nitems; | |
12 | |
13 static void q_item_free(item_t *item) | |
14 { | |
15 if (item == NULL) | |
16 return; | |
17 curl_free(item->artist); | |
18 curl_free(item->title); | |
19 curl_free(item->utctime); | |
20 curl_free(item->mb); | |
21 curl_free(item->album); | |
22 free(item); | |
23 } | |
24 | |
25 void q_put(metatag_t *meta, int len) | |
26 { | |
27 item_t *item; | |
28 | |
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 | 32 item->utctime = fmt_escape(fmt_timestr(time(NULL), 1)); |
33 snprintf(item->len, sizeof(item->len), "%d", len); | |
34 if(meta->mb == NULL) | |
35 item->mb = fmt_escape(""); | |
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 | 38 if(meta->album == NULL) |
39 item->album = fmt_escape(""); | |
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 | 42 |
43 q_nitems++; | |
44 | |
45 item->next = NULL; | |
46 | |
47 if(q_queue_last == NULL) | |
48 q_queue = q_queue_last = item; | |
49 else | |
50 { | |
51 q_queue_last->next = item; | |
52 q_queue_last = item; | |
53 } | |
54 } | |
55 | |
56 item_t *q_put2(char *artist, char *title, char *len, char *time, | |
57 char *album, char *mb) | |
58 { | |
59 char *temp = NULL; | |
60 item_t *item; | |
61 | |
62 item = calloc(1, sizeof(item_t)); | |
63 temp = fmt_unescape(artist); | |
64 item->artist = fmt_escape(temp); | |
65 curl_free(temp); | |
66 temp = fmt_unescape(title); | |
67 item->title = fmt_escape(temp); | |
68 curl_free(temp); | |
69 memcpy(item->len, len, sizeof(len)); | |
70 temp = fmt_unescape(time); | |
71 item->utctime = fmt_escape(temp); | |
72 curl_free(temp); | |
73 temp = fmt_unescape(album); | |
74 item->album = fmt_escape(temp); | |
75 curl_free(temp); | |
76 temp = fmt_unescape(mb); | |
77 item->mb = fmt_escape(temp); | |
78 curl_free(temp); | |
79 | |
80 q_nitems++; | |
81 | |
82 item->next = NULL; | |
83 if(q_queue_last == NULL) | |
84 q_queue = q_queue_last = item; | |
85 else | |
86 { | |
87 q_queue_last->next = item; | |
88 q_queue_last = item; | |
89 } | |
90 | |
91 return item; | |
92 } | |
93 | |
94 item_t *q_peek(void) | |
95 { | |
96 if (q_nitems == 0) | |
97 return NULL; | |
98 return q_queue; | |
99 } | |
100 | |
101 item_t *q_peekall(int rewind) | |
102 { | |
103 static item_t *citem = NULL; | |
104 item_t *temp_item; | |
105 | |
106 if (rewind) { | |
107 citem = q_queue; | |
108 return NULL; | |
109 } | |
110 | |
111 temp_item = citem; | |
112 | |
113 if(citem != NULL) | |
114 citem = citem->next; | |
115 | |
116 return temp_item; | |
117 } | |
118 | |
119 int q_get(void) | |
120 { | |
121 item_t *item; | |
122 | |
123 if (q_nitems == 0) | |
124 return 0; | |
125 | |
126 item = q_queue; | |
127 | |
128 if(item == NULL) | |
129 return 0; | |
130 | |
131 q_nitems--; | |
132 q_queue = q_queue->next; | |
133 | |
134 q_item_free(item); | |
135 | |
136 if (q_nitems == 0) | |
137 { | |
138 q_queue_last = NULL; | |
139 return 0; | |
140 } | |
141 | |
142 return -1; | |
143 } | |
144 | |
145 void q_free(void) | |
146 { | |
147 while (q_get()); | |
148 } | |
149 | |
150 int q_len(void) | |
151 { | |
152 return q_nitems; | |
153 } |