X-Git-Url: https://git.wpitchoune.net/gitweb/?p=prss.git;a=blobdiff_plain;f=src%2Fttrss.c;h=99b8bc416eadb617372d305656300ab3a00d0888;hp=f955cee22c2244c3158a10bf0a37f6903cb72f56;hb=3b14915e76fc7a05512e0523afd39556c0a14567;hpb=5a09ab51871a302a2d68533d7e086dfe86d9eb11 diff --git a/src/ttrss.c b/src/ttrss.c index f955cee..99b8bc4 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) { @@ -241,22 +188,21 @@ char *ws_get_article_content(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); } @@ -284,7 +230,7 @@ int ws_update_headlines(struct feed *feed) 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; @@ -292,7 +238,7 @@ int ws_update_headlines(struct feed *feed) h->content = NULL; h->title = NULL; h->url = NULL; - + tmp = headlines_add(feed->headlines, h); if (feed->headlines) free(feed->headlines); @@ -329,7 +275,6 @@ const char *ttrss_get_headline_content(struct headline *h) return h->content; } - struct feed **ttrss_get_feeds() { struct json_object *rp, *rq, *content, *jfeed, *j; @@ -368,7 +313,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; } @@ -403,7 +348,14 @@ void ttrss_set_article_unread(int id, int unread) 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); } + +void ttrss_set_config(const char *url, const char *user, const char *pwd) +{ + feeds_free(data); + data = NULL; + ws_init(url, user, pwd); +}