RSSyl: use procheader_date_parse() instead of parseRFC822Date().

This commit is contained in:
Andrej Kacian 2015-05-07 00:19:03 +02:00
parent 3d05195eb6
commit 455d234394
4 changed files with 8 additions and 34 deletions

View file

@ -120,32 +120,3 @@ gchar *createRFC822Date(const time_t *time) {
return g_strdup_printf("%s, %2d %s %4d %02d:%02d:%02d GMT", dayofweek[tm->tm_wday], tm->tm_mday,
months[tm->tm_mon], 1900 + tm->tm_year, tm->tm_hour, tm->tm_min, tm->tm_sec);
}
time_t parseRFC822Date(gchar *date)
{
struct tm t;
memset(&t, 0, sizeof(struct tm));
const char *c = setlocale(LC_TIME, NULL);
/* Adjust the LC_TIME locale to standard C in order for strptime()
* to work reliably. */
if (c != NULL)
setlocale(LC_TIME, "C");
if (date != NULL &&
!strptime(date, "%a, %d %b %Y %H:%M:%S %Z", &t) &&
!strptime(date, "%a, %d %b %Y %H:%M %Z", &t) &&
!strptime(date, "%d %b %Y %H:%M:%S %Z", &t) &&
!strptime(date, "%d %b %Y %H:%M %Z", &t)) {
g_warning("Invalid RFC822 date!\n");
if (c != NULL)
setlocale(LC_TIME, c);
return 0;
}
/* Restore the original LC_TIME locale. */
if (c != NULL)
setlocale(LC_TIME, c);
return mktime(&t);
}

View file

@ -6,6 +6,5 @@
time_t parseISO8601Date(gchar *date);
gchar *createRFC822Date(const time_t *time);
time_t parseRFC822Date(gchar *date);
#endif /* __DATE_H */

View file

@ -22,6 +22,8 @@
#include <expat.h>
#include <string.h>
#include <procheader.h>
#include "feed.h"
#include "date.h"
#include "parser_rdf.h"
@ -104,7 +106,7 @@ void feed_parser_rdf_end(void *data, const gchar *el)
} else if( !strcmp(el, "dc:date") ) {
feed->date = parseISO8601Date(text);
} else if( !strcmp(el, "pubDate") ) {
feed->date = parseRFC822Date(text);
feed->date = procheader_date_parse(NULL, text, 0);
}
break;
@ -129,7 +131,7 @@ void feed_parser_rdf_end(void *data, const gchar *el)
} else if( !strcmp(el, "dc:date") ) {
ctx->curitem->date_modified = parseISO8601Date(text);
} else if( !strcmp(el, "pubDate") ) {
ctx->curitem->date_modified = parseRFC822Date(text);
ctx->curitem->date_modified = procheader_date_parse(NULL, text, 0);
}
break;

View file

@ -22,6 +22,8 @@
#include <expat.h>
#include <string.h>
#include <procheader.h>
#include "feed.h"
#include "feeditem.h"
#include "feeditemenclosure.h"
@ -132,7 +134,7 @@ void feed_parser_rss20_end(void *data, const gchar *el)
} else if( !strcmp(el, "dc:date") ) {
feed->date = parseISO8601Date(text);
} else if( !strcmp(el, "pubDate") ) {
feed->date = parseRFC822Date(text);
feed->date = procheader_date_parse(NULL, text, 0);
}
break;
@ -162,7 +164,7 @@ void feed_parser_rss20_end(void *data, const gchar *el)
} else if( !strcmp(el, "dc:date") ) {
ctx->curitem->date_modified = parseISO8601Date(text);
} else if( !strcmp(el, "pubDate") ) {
ctx->curitem->date_modified = parseRFC822Date(text);
ctx->curitem->date_modified = procheader_date_parse(NULL, text, 0);
} else if( !strcmp(el, "dc:creator")) {
FILL(ctx->curitem->author)
}