X-Git-Url: https://git.wpitchoune.net/gitweb/?p=prss.git;a=blobdiff_plain;f=src%2Fttrss.c;h=1f971551b2a3a17b7cee8359c459e843f78e80f5;hp=92285198f055f8b63cf942d690afec4068ca0f3c;hb=9e8f000157c9c09742b5cc55f768782e16db240c;hpb=c228345525be4912e6b5acec7525dc056313f315 diff --git a/src/ttrss.c b/src/ttrss.c index 9228519..1f97155 100644 --- a/src/ttrss.c +++ b/src/ttrss.c @@ -31,60 +31,7 @@ static char *session_url; static char *session_user; static char *session_pwd; -static int list_length(void **list) -{ - int n; - - if (!list) - return 0; - - n = 0; - while (*list) { - n++; - list++; - } - - return n; -} - -static void **list_add(void **list, void *item) -{ - int n; - void **result; - - n = list_length(list); - - result = malloc((n + 1 + 1) * sizeof(void *)); - - if (list) - memcpy(result, list, n * sizeof(void *)); - - result[n] = item; - result[n + 1] = NULL; - - 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) -{ - struct headline **headlines; - - headlines = feed->headlines; - if (headlines) - while (*headlines) { - if ((*headlines)->id == id) - return *headlines; - headlines++; - } - - return NULL; -} +static struct feed **data; void ws_request_add_att_str(json_object *rq, const char *k, const char *str) { @@ -267,6 +214,7 @@ int ws_update_headlines(struct feed *feed) 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); @@ -285,12 +233,13 @@ int ws_update_headlines(struct feed *feed) 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) @@ -298,16 +247,6 @@ int ws_update_headlines(struct feed *feed) 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); } @@ -366,7 +305,7 @@ struct feed **ttrss_get_feeds() feed->headlines = NULL; - tmp = (struct feed **)list_add((void **)feeds, feed); + tmp = feeds_add(feeds, feed); free(feeds); feeds = tmp; } @@ -405,3 +344,10 @@ void ttrss_set_article_unread(int id, int unread) json_object_put(rq); json_object_put(rp); } + +void ttrss_set_config(const char *url, const char *user, const char *pwd) +{ + feeds_free(data); + data = NULL; + ws_init(url, user, pwd); +}