if (!list)
return 0;
-
+
n = 0;
- while(*list) {
+ while (*list) {
n++;
list++;
}
return result;
}
+struct headline **
+headlines_add(struct headline **list, struct headline *h)
+{
+ return (struct headline **)list_add((void **)list, (void *)h);
+}
struct headline *feed_get_headline(struct feed *feed, int id)
{
rq = ws_request_new("getArticle");
ws_request_add_att_int(rq, "article_id", id);
-
+
rp = ws_execute(rq);
-
+
json_object_put(rq);
str = NULL;
if (rp) {
item = json_object_array_get_idx(rp, 0);
-
+
if (item) {
content = json_object_object_get(item, "content");
-
str = strdup(json_object_get_string(content));
}
-
+
json_object_put(rp);
}
j = json_object_object_get(jheadline, "id");
hid = json_object_get_int(j);
h = feed_get_headline(feed, hid);
-
+
if (!h) {
h = malloc(sizeof(struct headline));
h->id = hid;
h->excerpt = NULL;
h->content = NULL;
-
- tmp = (struct headline **)list_add((void **)feed->headlines, h);
+ h->title = NULL;
+ h->url = NULL;
+
+ tmp = headlines_add(feed->headlines, h);
if (feed->headlines)
free(feed->headlines);
feed->headlines = tmp;
}
- j = json_object_object_get(jheadline, "title");
- h->title = strdup(json_object_get_string(j));
+ if (!h->title) {
+ j = json_object_object_get(jheadline, "title");
+ h->title = strdup(json_object_get_string(j));
+ }
- j = json_object_object_get(jheadline, "link");
- h->url = 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);
json_object_object_add(rq, "mode", json_object_new_int(unread));
rp = http_json_get(session_url, rq);
-
+
json_object_put(rq);
json_object_put(rp);
}