#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
#include <glib.h>
#include <json/json.h>
{
FILE *fp;
+ log_debug("file_set_content(): path=%s", path);
+
fp = fopen(path, "w");
if (fp) {
fwrite(content, 1, strlen(content), fp);
}
}
-char *ttrss_get_headline_content(struct headline *h)
+static gchar *content_get_path(const struct headline *h)
{
const char *cache_dir;
- char *path, *content;
cache_dir = get_cache_dir();
- if (cache_dir) {
- path = g_strdup_printf("%s/%d", cache_dir, h->id);
+ if (cache_dir)
+ return g_strdup_printf("%s/%d", cache_dir, h->id);
- content = file_get_content(path);
+ return NULL;
+}
- if (!content) {
- content = ws_get_article_content(h->id);
- file_set_content(path, content);
- }
+static int is_content_cached(const struct headline *h)
+{
+ struct stat s;
+ char *path;
+ int result;
+
+ path = content_get_path(h);
+
+ if (stat(path, &s) == -1)
+ result = 0;
+ else
+ result = 1;
+
+ g_free(path);
+
+ return result;
+}
- g_free(path);
+char *ttrss_get_headline_content(struct headline *h)
+{
+ char *path, *content;
- return content;
+ path = content_get_path(h);
+ if (path)
+ content = file_get_content(path);
+ else
+ content = NULL;
+
+ if (!content) {
+ content = ws_get_article_content(h->id);
+ file_set_content(path, content);
}
- return NULL;
+ g_free(path);
+
+ return content;
}
struct feed **ttrss_get_feeds()
{
return feeds_get_headline(data, id);
}
+
+void ttrs_download_headline_content(struct feed **feeds)
+{
+ struct feed **fcur;
+ struct headline **hcur;
+
+ for (fcur = feeds; *fcur; fcur++) {
+ hcur = ttrss_feed_get_headlines(*fcur);
+
+ while (hcur && *hcur) {
+ if (!is_content_cached(*hcur))
+ free(ttrss_get_headline_content(*hcur));
+ hcur++;
+ }
+ }
+}