+ log_debug("file_set_content(): path=%s", path);
+
+ fp = fopen(path, "w");
+ if (fp) {
+ fwrite(content, 1, strlen(content), fp);
+ fclose(fp);
+ }
+}
+
+static gchar *content_get_path(const struct headline *h)
+{
+ const char *cache_dir;
+
+ cache_dir = get_cache_dir();
+ if (cache_dir)
+ return g_strdup_printf("%s/%d", cache_dir, h->id);
+
+ return NULL;
+}
+
+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;
+}
+
+char *ttrss_get_headline_content(struct headline *h)
+{
+ char *path, *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);
+ }
+
+ g_free(path);
+
+ return content;