* new rss.c written by hifi (Toni Spets)
*/
+#ifdef RSS
+
#include <stdio.h>
#include <string.h>
#include <time.h>
return 0;
}
+void init_rss_info()
+{
+ int i;
+ for(i = 0; i < MAX_FEEDS; i++) {
+ feeds[i].uri = NULL;
+ feeds[i].data = NULL;
+ feeds[i].last_update = 0;
+ }
+}
+
+void free_rss_info()
+{
+ int i;
+ for(i = 0; i < num_feeds; i++)
+ if(feeds[i].uri != NULL)
+ free(feeds[i].uri);
+}
+
PRSS*
get_rss_info(char *uri, int delay)
{
int i;
// first seek for the uri in list
- if(num_feeds > 0) {
- for(i = 0; i < num_feeds; i++) {
- if(feeds[i].uri != NULL)
- if(!strcmp(feeds[i].uri, uri)) {
- curfeed = &feeds[i];
- break;
- }
- }
+ for(i = 0; i < num_feeds; i++) {
+ if(feeds[i].uri != NULL)
+ if(!strcmp(feeds[i].uri, uri)) {
+ curfeed = &feeds[i];
+ break;
+ }
}
if(!curfeed) { // new feed
if(num_feeds == MAX_FEEDS-1) return NULL;
curfeed = &feeds[num_feeds];
- curfeed->uri = (char *)malloc(sizeof(char) * strlen(uri)+1);
- strncpy(curfeed->uri, uri, strlen(uri)+1);
+ curfeed->uri = strdup(uri);
num_feeds++;
}
if(!rss_delay(last_update, delay))
return curdata; // wait for delay to pass
- if(curdata != NULL)
+ if(curdata != NULL) {
prss_free(curdata); // clean up old data
+ curdata = NULL;
+ }
curl = curl_easy_init();
if(curl) {
} else
ERR("No data from server");
- curfeed->data = curdata;
-
curl_easy_cleanup(curl);
}
+ curfeed->data = curdata;
+
return curdata;
}
+
+#endif