projects
/
prss.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
05d4d92
)
(no commit message)
author
Jean-Philippe Orsini
<jeanfi@gmail.com>
Mon, 29 Apr 2013 09:36:15 +0000
(09:36 +0000)
committer
Jean-Philippe Orsini
<jeanfi@gmail.com>
Mon, 29 Apr 2013 09:36:15 +0000
(09:36 +0000)
src/ttrss.c
patch
|
blob
|
history
diff --git
a/src/ttrss.c
b/src/ttrss.c
index
9b76295
..
b3b555e
100644
(file)
--- a/
src/ttrss.c
+++ b/
src/ttrss.c
@@
-20,6
+20,10
@@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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>
#include <glib.h>
#include <json/json.h>
@@
-54,6
+58,8
@@
static void file_set_content(const char *path, const char *content)
{
FILE *fp;
{
FILE *fp;
+ log_debug("file_set_content(): path=%s", path);
+
fp = fopen(path, "w");
if (fp) {
fwrite(content, 1, strlen(content), fp);
fp = fopen(path, "w");
if (fp) {
fwrite(content, 1, strlen(content), fp);
@@
-61,28
+67,53
@@
static void file_set_content(const char *path, const char *content)
}
}
}
}
-
char *ttrss_get_headline_content(
struct headline *h)
+
static char *content_get_path(const
struct headline *h)
{
const char *cache_dir;
{
const char *cache_dir;
- char *path, *content;
cache_dir = get_cache_dir();
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);
+ free(path);
- return content;
+ 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);
}
}
- return NULL;
+ free(path);
+
+ return content;
}
struct feed **ttrss_get_feeds()
}
struct feed **ttrss_get_feeds()
@@
-135,7
+166,8
@@
void ttrs_download_headline_content(struct feed **feeds)
hcur = ttrss_feed_get_headlines(*fcur);
while (hcur && *hcur) {
hcur = ttrss_feed_get_headlines(*fcur);
while (hcur && *hcur) {
- free(ttrss_get_headline_content(*hcur));
+ if (!is_content_cached(*hcur))
+ free(ttrss_get_headline_content(*hcur));
hcur++;
}
}
hcur++;
}
}