void rss_xml_start(void *data, const char *supplied_el, const char **attr)
{
rss_xml_handler *h;
- rsscollection *rssc = (rsscollection*) data;
- rssnetcfg *Cfg = rssc->Cfg;
+ rss_aggregator *rssc = (rss_aggregator*) data;
rss_item *ri = rssc->Item;
void *pv;
const char *pel;
rssc->Current = h = (rss_xml_handler*) pv;
if (((h->Flags & RSS_UNSET) != 0) &&
- (Cfg->ItemType == RSS_UNSET))
+ (rssc->ItemType == RSS_UNSET))
{
- h->Handler(rssc->CData, ri, Cfg, attr);
+ h->Handler(rssc->CData, ri, rssc, attr);
}
else if (((h->Flags & RSS_RSS) != 0) &&
- (Cfg->ItemType == RSS_RSS))
+ (rssc->ItemType == RSS_RSS))
{
- h->Handler(rssc->CData, ri, Cfg, attr);
+ h->Handler(rssc->CData, ri, rssc, attr);
}
else if (((h->Flags & RSS_ATOM) != 0) &&
- (Cfg->ItemType == RSS_ATOM))
+ (rssc->ItemType == RSS_ATOM))
{
- h->Handler(rssc->CData, ri, Cfg, attr);
+ h->Handler(rssc->CData, ri, rssc, attr);
}
#ifdef DEBUG_RSS
else
void rss_xml_end(void *data, const char *supplied_el)
{
rss_xml_handler *h;
- rsscollection *rssc = (rsscollection*) data;
- rssnetcfg *Cfg = rssc->Cfg;
+ rss_aggregator *rssc = (rss_aggregator*) data;
rss_item *ri = rssc->Item;
const char *pel;
char *sep = NULL;
h = (rss_xml_handler*) pv;
if (((h->Flags & RSS_UNSET) != 0) &&
- (Cfg->ItemType == RSS_UNSET))
+ (rssc->ItemType == RSS_UNSET))
{
- h->Handler(rssc->CData, ri, Cfg, NULL);
+ h->Handler(rssc->CData, ri, rssc, NULL);
}
else if (((h->Flags & RSS_RSS) != 0) &&
- (Cfg->ItemType == RSS_RSS))
+ (rssc->ItemType == RSS_RSS))
{
- h->Handler(rssc->CData, ri, Cfg, NULL);
+ h->Handler(rssc->CData, ri, rssc, NULL);
}
else if (((h->Flags & RSS_ATOM) != 0) &&
- (Cfg->ItemType == RSS_ATOM))
+ (rssc->ItemType == RSS_ATOM))
{
- h->Handler(rssc->CData, ri, Cfg, NULL);
+ h->Handler(rssc->CData, ri, rssc, NULL);
}
#ifdef DEBUG_RSS
else
-void RSS_item_rss_start (StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void RSS_item_rss_start (StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
- CtdlLogPrintf(CTDL_DEBUG, "RSS: This is an RSS feed.\n");
+ syslog(LOG_DEBUG, "RSS: This is an RSS feed.\n");
Cfg->ItemType = RSS_RSS;
}
-void RSS_item_rdf_start(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void RSS_item_rdf_start(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
- CtdlLogPrintf(CTDL_DEBUG, "RSS: This is an RDF feed.\n");
+ syslog(LOG_DEBUG, "RSS: This is an RDF feed.\n");
Cfg->ItemType = RSS_RSS;
}
-void ATOM_item_feed_start(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void ATOM_item_feed_start(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
- CtdlLogPrintf(CTDL_DEBUG, "RSS: This is an ATOM feed.\n");
+ syslog(LOG_DEBUG, "RSS: This is an ATOM feed.\n");
Cfg->ItemType = RSS_ATOM;
}
-void RSS_item_item_start(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void RSS_item_item_start(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
ri->item_tag_nesting ++;
flush_rss_item(ri);
}
-void ATOM_item_entry_start(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void ATOM_item_entry_start(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
/* Atom feed... */
ri->item_tag_nesting ++;
flush_rss_item(ri);
}
-void ATOM_item_link_start (StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void ATOM_item_link_start (StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
int i;
const char *pHref = NULL;
-void ATOMRSS_item_title_end(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void ATOMRSS_item_title_end(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
if ((ri->item_tag_nesting == 0) && (StrLength(CData) > 0)) {
NewStrBufDupAppendFlush(&ri->channel_title, CData, NULL, 0);
}
}
-void RSS_item_guid_end(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void RSS_item_guid_end(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
if (StrLength(CData) > 0) {
NewStrBufDupAppendFlush(&ri->guid, CData, NULL, 0);
}
}
-void ATOM_item_id_end(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void ATOM_item_id_end(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
if (StrLength(CData) > 0) {
NewStrBufDupAppendFlush(&ri->guid, CData, NULL, 0);
}
-void RSS_item_link_end (StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void RSS_item_link_end (StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
if (StrLength(CData) > 0) {
NewStrBufDupAppendFlush(&ri->link, CData, NULL, 0);
StrBufTrim(ri->link);
}
}
-void RSS_item_relink_end(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void RSS_item_relink_end(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
if (StrLength(CData) > 0) {
NewStrBufDupAppendFlush(&ri->reLink, CData, NULL, 0);
}
}
-void RSSATOM_item_title_end (StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void RSSATOM_item_title_end (StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
if (StrLength(CData) > 0) {
NewStrBufDupAppendFlush(&ri->title, CData, NULL, 0);
}
}
-void ATOM_item_content_end (StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void ATOM_item_content_end (StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
long olen = StrLength (ri->description);
long clen = StrLength (CData);
}
}
}
-void ATOM_item_summary_end (StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void ATOM_item_summary_end (StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
/* this can contain an abstract of the article. but we don't want to verwrite a full document if we already have it. */
if ((StrLength(CData) > 0) && (StrLength(ri->description) == 0))
}
}
-void RSS_item_description_end (StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void RSS_item_description_end (StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
long olen = StrLength (ri->description);
long clen = StrLength (CData);
}
}
-void ATOM_item_published_end (StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void ATOM_item_published_end (StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
if (StrLength(CData) > 0) {
StrBufTrim(CData);
}
}
-void ATOM_item_updated_end (StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void ATOM_item_updated_end (StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
if (StrLength(CData) > 0) {
StrBufTrim(CData);
}
}
-void RSS_item_pubdate_end (StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void RSS_item_pubdate_end (StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
if (StrLength(CData) > 0) {
StrBufTrim(CData);
}
-void RSS_item_date_end (StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void RSS_item_date_end (StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
if (StrLength(CData) > 0) {
StrBufTrim(CData);
-void RSS_item_author_end(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void RSS_item_author_end(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
if (StrLength(CData) > 0) {
NewStrBufDupAppendFlush(&ri->author_or_creator, CData, NULL, 0);
}
-void ATOM_item_name_end(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void ATOM_item_name_end(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
if (StrLength(CData) > 0) {
NewStrBufDupAppendFlush(&ri->author_or_creator, CData, NULL, 0);
}
}
-void ATOM_item_email_end(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void ATOM_item_email_end(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
if (StrLength(CData) > 0) {
NewStrBufDupAppendFlush(&ri->author_email, CData, NULL, 0);
}
}
-void RSS_item_creator_end(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void RSS_item_creator_end(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
if ((StrLength(CData) > 0) &&
(StrLength(ri->author_or_creator) == 0))
}
-void ATOM_item_uri_end(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void ATOM_item_uri_end(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
if (StrLength(CData) > 0) {
NewStrBufDupAppendFlush(&ri->author_url, CData, NULL, 0);
}
}
-void RSS_item_item_end(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void RSS_item_item_end(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
--ri->item_tag_nesting;
- rss_save_item(ri);
+ rss_save_item(ri, Cfg);
}
-void ATOM_item_entry_end(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void ATOM_item_entry_end(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
--ri->item_tag_nesting;
- rss_save_item(ri);
+ rss_save_item(ri, Cfg);
}
-void RSS_item_rss_end(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void RSS_item_rss_end(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
-// CtdlLogPrintf(CTDL_DEBUG, "End of feed detected. Closing parser.\n");
+// syslog(LOG_DEBUG, "End of feed detected. Closing parser.\n");
ri->done_parsing = 1;
}
-void RSS_item_rdf_end(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void RSS_item_rdf_end(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
-// CtdlLogPrintf(CTDL_DEBUG, "End of feed detected. Closing parser.\n");
+// syslog(LOG_DEBUG, "End of feed detected. Closing parser.\n");
ri->done_parsing = 1;
}
-void RSSATOM_item_ignore(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+void RSSATOM_item_ignore(StrBuf *CData, rss_item *ri, rss_aggregator *Cfg, const char** Attr)
{
}
*/
void rss_xml_cdata_start(void *data)
{
- rsscollection *rssc = (rsscollection*) data;
+ rss_aggregator *rssc = (rss_aggregator*) data;
FlushStrBuf(rssc->CData);
}
}
void rss_xml_chardata(void *data, const XML_Char *s, int len)
{
- rsscollection *rssc = (rsscollection*) data;
+ rss_aggregator *rssc = (rss_aggregator*) data;
StrBufAppendBufPlain (rssc->CData, s, len, 0);
}
eNextState ParseRSSReply(AsyncIO *IO)
{
- rsscollection *rssc;
+ rss_aggregator *rssc;
rss_item *ri;
const char *at;
char *ptr;
rssc = IO->Data;
ri = rssc->Item;
- ri->roomlist_parts = rssc->Cfg->roomlist_parts;
- ri->roomlist = rssc->Cfg->rooms;
rssc->CData = NewStrBufPlain(NULL, SIZ);
rssc->Key = NewStrBuf();
at = NULL;
else
ptr = "UTF-8";
- CtdlLogPrintf(CTDL_ALERT, "RSS: Now parsing [%s] \n", ChrPtr(rssc->Cfg->Url));
+ syslog(LOG_DEBUG, "RSS: Now parsing [%s] \n", ChrPtr(rssc->Url));
rssc->xp = XML_ParserCreateNS(ptr, ':');
if (!rssc->xp) {
- CtdlLogPrintf(CTDL_ALERT, "Cannot create XML parser!\n");
+ syslog(LOG_DEBUG, "Cannot create XML parser!\n");
goto shutdown;
}
FlushStrBuf(rssc->Key);
XML_Parse(rssc->xp, "", 0, 1);
- CtdlLogPrintf(CTDL_ALERT, "RSS: XML Status [%s] \n",
+ syslog(LOG_DEBUG, "RSS: XML Status [%s] \n",
XML_ErrorString(
XML_GetErrorCode(rssc->xp)));
}
-void rss_cleanup(void)
+void rss_parser_cleanup(void)
{
DeleteHash(&StartHandlers);
DeleteHash(&EndHandlers);
/* we don't like these namespaces because of they shadow our usefull parameters. */
Put(KnownNameSpaces, HKEY("http://search.yahoo.com/mrss/"), NULL, reference_free_handler);
#endif
- CtdlRegisterCleanupHook(rss_cleanup);
+ CtdlRegisterCleanupHook(rss_parser_cleanup);
}
return "rssparser";
}