projects
/
citadel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
83b162e
)
Ignore namespace, this is a naive parser, this fixes Atom feeds
author
Art Cancro
<ajc@citadel.org>
Sun, 26 Feb 2017 23:58:17 +0000
(18:58 -0500)
committer
Art Cancro
<ajc@citadel.org>
Sun, 26 Feb 2017 23:58:17 +0000
(18:58 -0500)
citadel/modules/rssclient/serv_rssclient.c
patch
|
blob
|
history
diff --git
a/citadel/modules/rssclient/serv_rssclient.c
b/citadel/modules/rssclient/serv_rssclient.c
index 2b1baa5d9b14f014a6677f3d8e355729bcea1fe0..6ace63fa09d5d21e9901c0dc4bb33023d8024aa1 100644
(file)
--- a/
citadel/modules/rssclient/serv_rssclient.c
+++ b/
citadel/modules/rssclient/serv_rssclient.c
@@
-119,6
+119,7
@@
void rss_end_element(void *data, const char *el)
{
struct rssparser *r = (struct rssparser *)data;
{
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"))
if ( // end of a new item(rss) or entry(atom)
(!strcasecmp(el, "entry"))
|| (!strcasecmp(el, "item"))
@@
-213,7
+214,7
@@
void rss_end_element(void *data, const char *el)
}
else if (!strcasecmp(el, "pubdate")) { // date/time stamp (rss) Sat, 25 Feb 2017 14:28:01 EST
}
else if (!strcasecmp(el, "pubdate")) { // date/time stamp (rss) Sat, 25 Feb 2017 14:28:01 EST
- if (
CM_IsEmpty(r->msg, eTimestamp
)) {
+ if (
(r->msg)&&(r->msg->cm_fields[eTimestamp]==NULL
)) {
CM_SetFieldLONG(r->msg, eTimestamp, parsedate(ChrPtr(r->CData)));
}
}
CM_SetFieldLONG(r->msg, eTimestamp, parsedate(ChrPtr(r->CData)));
}
}
@@
-284,7
+285,7
@@
void rss_parse_feed(StrBuf *Feed, struct rssroom *rooms)
memset(&r, 0, sizeof r);
r.rooms = rooms;
memset(&r, 0, sizeof r);
r.rooms = rooms;
- XML_Parser p = XML_ParserCreate
NS("UTF-8", ':'
);
+ XML_Parser p = XML_ParserCreate
("UTF-8"
);
XML_SetElementHandler(p, rss_start_element, rss_end_element);
XML_SetCharacterDataHandler(p, rss_handle_data);
XML_SetUserData(p, (void *)&r);
XML_SetElementHandler(p, rss_start_element, rss_end_element);
XML_SetCharacterDataHandler(p, rss_handle_data);
XML_SetUserData(p, (void *)&r);