talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 65301ac547ffe70fd2726f4e1320103b307b9b19
parent eff481a299357c39b1f151e2b3d012ecb47cfb0b
Author: Andrej Kacian <ticho@claws-mail.org>
Date:   Tue, 18 Sep 2018 19:29:12 +0200

Set missing pubdate/moddate in RSSyl items to the other one, if available.

Diffstat:
Msrc/plugins/rssyl/parse822.c | 4+++-
Msrc/plugins/rssyl/rssyl_add_item.c | 23+++++++++++++++++++++--
2 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/src/plugins/rssyl/parse822.c b/src/plugins/rssyl/parse822.c @@ -103,10 +103,12 @@ FeedItem *rssyl_parse_folder_item_file(gchar *path) started_author = TRUE; } - /* Date */ + /* Date (set both FeedItem timestamps) */ if( !strcmp(line[0], "Date") ) { feed_item_set_date_modified(item, procheader_date_parse(NULL, line[1], 0)); + feed_item_set_date_published(item, + feed_item_get_date_modified(item)); debug_print("RSSyl: got date \n" ); } diff --git a/src/plugins/rssyl/rssyl_add_item.c b/src/plugins/rssyl/rssyl_add_item.c @@ -303,11 +303,30 @@ void rssyl_add_item(RFolderItem *ritem, FeedItem *feed_item) } */ - /* If neither item date is set, use date from source (Atom only). */ + /* If one of the timestamps is empty, set it to value of the other one. */ if( feed_item_get_date_modified(feed_item) == -1 && - feed_item_get_date_published(feed_item) == -1 ) + feed_item_get_date_published(feed_item) >= 0 ) { + debug_print("RSSyl: setting missing moddate to pubdate %ld\n", + feed_item_get_date_published(feed_item)); + feed_item_set_date_modified(feed_item, + feed_item_get_date_published(feed_item)); + } else if( feed_item_get_date_published(feed_item) == -1 && + feed_item_get_date_modified(feed_item) >= 0 ) { + debug_print("RSSyl: setting missing pubdate to modddate %ld\n", + feed_item_get_date_modified(feed_item)); feed_item_set_date_published(feed_item, + feed_item_get_date_modified(feed_item)); + } else if( feed_item_get_date_modified(feed_item) == -1 && + feed_item_get_date_published(feed_item) == -1 && + feed_item_get_sourcedate(feed_item) >= 0 ) { + /* If neither item date is set, use date from source (Atom only). */ + debug_print("RSSyl: setting missing pubdate and moddate to feed source date %ld\n", feed_item_get_sourcedate(feed_item)); + feed_item_set_date_modified(feed_item, + feed_item_get_sourcedate(feed_item)); + feed_item_set_date_published(feed_item, + feed_item_get_sourcedate(feed_item)); + } /* Fix up subject, url and ID (rssyl_format_string()) so that * comparing doesn't break. */