struct json_object *rp, *rq, *jheadline, *j;
int i, n, err, hid;
struct headline *h, **tmp;
+ const char *title, *url;
rq = ws_request_new("getHeadlines");
ws_request_add_att_int(rq, "feed_id", feed->id);
h = feed_get_headline(feed, hid);
if (!h) {
- h = malloc(sizeof(struct headline));
- h->id = hid;
- h->excerpt = NULL;
- h->content = NULL;
- h->title = NULL;
- h->url = NULL;
+ j = json_object_object_get(jheadline, "title");
+ title = json_object_get_string(j);
+
+ j = json_object_object_get(jheadline, "link");
+ url = json_object_get_string(j);
+
+ h = headline_new(hid, url, title);
tmp = headlines_add(feed->headlines, h);
if (feed->headlines)
feed->headlines = tmp;
}
- if (!h->title) {
- j = json_object_object_get(jheadline, "title");
- h->title = strdup(json_object_get_string(j));
- }
-
- if (!h->url) {
- j = json_object_object_get(jheadline, "link");
- h->url = strdup(json_object_get_string(j));
- }
-
j = json_object_object_get(jheadline, "unread");
h->unread = json_object_get_boolean(j);
}
return NULL;
}
+void headline_free(struct headline *headline)
+{
+ if (headline) {
+ free(headline->url);
+ free(headline->title);
+ free(headline->excerpt);
+ free(headline->content);
+ free(headline);
+ }
+}
+
+struct headline *headline_new(int id, const char *url, const char *title)
+{
+ struct headline *h;
+
+ h = malloc(sizeof(struct headline));
+ h->id = id;
+ h->url = strdup(url);
+ h->title = strdup(title);
+ h->excerpt = NULL;
+ h->content = NULL;
+
+ return h;
+}
+
void headlines_free(struct headline **headlines)
{
+ struct headline **cur;
+
+ if (headlines) {
+ cur = headlines;
+ while (*cur) {
+ headline_free(*cur);
+ cur++;
+ }
+ free(headlines);
+ }
}
void feed_free(struct feed *feed)
void feed_free(struct feed *feed);
void feeds_free(struct feed **feed);
+
struct headline **headlines_add(struct headline **list, struct headline *h);
+struct headline *headline_new(int id, const char *url, const char *title);
struct feed **feeds_add(struct feed **list, struct feed *f);
struct headline *feed_get_headline(struct feed *feed, int id);