]> code.citadel.org Git - citadel.git/blobdiff - citadel/modules/rssclient/serv_rssclient.c
antiexpire 0 for rss
[citadel.git] / citadel / modules / rssclient / serv_rssclient.c
index 6ace63fa09d5d21e9901c0dc4bb33023d8024aa1..1b4c27ed5a47022e93ce257ceaef8ad32f138a68 100644 (file)
@@ -119,7 +119,6 @@ void rss_end_element(void *data, const char *el)
 {
        struct rssparser *r = (struct rssparser *)data;
 
-       syslog(LOG_DEBUG, "end: %s", el);
        if (                                                    // end of a new item(rss) or entry(atom)
                (!strcasecmp(el, "entry"))
                || (!strcasecmp(el, "item"))
@@ -135,7 +134,7 @@ void rss_end_element(void *data, const char *el)
                        // check the use table
                        StrBuf *u = NewStrBuf();
                        StrBufAppendPrintf(u, "rss/%s", r->item_id);
-                       time_t already_seen = CheckIfAlreadySeen("rss", u, time(NULL), 604800, eUpdate, 0, 0);
+                       time_t already_seen = CheckIfAlreadySeen(u, time(NULL), 0, eUpdate);
                        FreeStrBuf(&u);
 
                        if (already_seen == 0) {
@@ -220,7 +219,15 @@ void rss_end_element(void *data, const char *el)
        }
 
        else if (!strcasecmp(el, "updated")) {                  // date/time stamp (atom) 2003-12-13T18:30:02Z
-               // FIXME parse it
+               if ((r->msg)&&(r->msg->cm_fields[eTimestamp]==NULL)) {
+                       struct tm t;
+                       char zulu;
+                       memset(&t, 0, sizeof t);
+                       sscanf(ChrPtr(r->CData), "%d-%d-%dT%d:%d:%d%c", &t.tm_year, &t.tm_mon, &t.tm_mday, &t.tm_hour, &t.tm_min, &t.tm_sec, &zulu);
+                       t.tm_year -= 1900;
+                       t.tm_mon -= 1;
+                       CM_SetFieldLONG(r->msg, eTimestamp, mktime(&t));
+               }
        }
 
        else if (!strcasecmp(el, "link")) {                     // link to story (rss)
@@ -247,6 +254,7 @@ void rss_end_element(void *data, const char *el)
        else if (
                (!strcasecmp(el, "description"))                // message text (rss)
                || (!strcasecmp(el, "summary"))                 // message text (atom)
+               || (!strcasecmp(el, "content"))                 // message text (atom)
        ) {
                if (r->description != NULL) {
                        free(r->description);