StrBuf *EmailAddress;
StrBuf *EncBuf;
int FromAt;
+ int FromLen;
UserName = NewStrBuf();
EmailAddress = NewStrBuf();
EncBuf = NewStrBuf();
////TODO!
+ StrBufTrim(ri->author_or_creator);
From = html_to_ascii(ChrPtr(ri->author_or_creator),
StrLength(ri->author_or_creator),
512, 0);
+ FromLen = strlen(From);
+ if (From[FromLen - 1] == '\n')
+ {
+ From[FromLen - 1] = '\0';
+ }
FromAt = strchr(From, '@') != NULL;
if (!FromAt && StrLength (ri->author_email) > 0)
{
if (!IsEmptyStr(From))
{
StrBufPrintf(Encoded,
- "\"%s\" <%s>",
+ "%s<%s>",
From,
ChrPtr(ri->author_email));
}
{
Encoded = NewStrBuf();
StrBufPrintf(Encoded,
- "\"%s\" <%s>",
+ "%s<%s>",
From,
"rss@localhost"); /// TODO: get hostname?
}
StrBufSpaceToBlank(ri->title);
len = StrLength(ri->title);
Sbj = html_to_ascii(ChrPtr(ri->title), len, 512, 0);
- Encoded = NewStrBufPlain(Sbj, -1);
+ len = strlen(Sbj);
+ if (Sbj[len - 1] == '\n')
+ {
+ len --;
+ Sbj[len] = '\0';
+ }
+ Encoded = NewStrBufPlain(Sbj, len);
free(Sbj);
StrBufTrim(Encoded);
StrBufTrim(ri->link);
}
}
+void RSS_item_relink_end(StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
+{
+ if (StrLength(CData) > 0) {
+ NewStrBufDupAppendFlush(&ri->reLink, CData, NULL, 0);
+ StrBufTrim(ri->reLink);
+ }
+}
void RSSATOM_item_title_end (StrBuf *CData, rss_item *ri, rssnetcfg *Cfg, const char** Attr)
{
/*
* Scan for rooms that have RSS client requests configured
*/
- void *rssclient_scan(void *args) {
+ void rssclient_scan(void *args) {
static time_t last_run = 0L;
static int doing_rssclient = 0;
rssnetcfg *rptr = NULL;
- CitContext rssclientCC;
-
- /* Give this thread its own private CitContext */
- CtdlFillSystemContext(&rssclientCC, "rssclient");
- citthread_setspecific(MyConKey, (void *)&rssclientCC );
/*
* This is a simple concurrency check to make sure only one rssclient run
CtdlLogPrintf(CTDL_DEBUG, "rssclient ended\n");
last_run = time(NULL);
doing_rssclient = 0;
- if (!CtdlThreadCheckStop())
- CtdlThreadSchedule ("RSS Client", CTDLTHREAD_BIGSTACK, rssclient_scan, NULL, last_run + config.c_net_freq);
- else
- CtdlLogPrintf(CTDL_DEBUG, "rssclient: Task STOPPED.\n");
- CtdlClearSystemContext();
return NULL;
}
if (threading)
{
CtdlLogPrintf(CTDL_INFO, "%s\n", curl_version());
- CtdlThreadSchedule ("RSS Client", CTDLTHREAD_BIGSTACK, rssclient_scan, NULL, 0);
+ CtdlRegisterSessionHook(rssclient_scan, EVT_TIMER);
}
StartHandlers = NewHash(1, NULL);
AddRSSEndHandler(RSS_item_guid_end, RSS_RSS|RSS_REQUIRE_BUF, HKEY("guid"));
AddRSSEndHandler(ATOM_item_id_end, RSS_ATOM|RSS_REQUIRE_BUF, HKEY("id"));
AddRSSEndHandler(RSS_item_link_end, RSS_RSS|RSS_REQUIRE_BUF, HKEY("link"));
+#if 0
+// hm, rss to the comments of that blog, might be interesting in future, but...
+ AddRSSEndHandler(RSS_item_relink_end, RSS_RSS|RSS_REQUIRE_BUF, HKEY("commentrss"));
+// comment count...
+ AddRSSEndHandler(RSS_item_relink_end, RSS_RSS|RSS_REQUIRE_BUF, HKEY("comments"));
+#endif
AddRSSEndHandler(RSSATOM_item_title_end, RSS_ATOM|RSS_RSS|RSS_REQUIRE_BUF, HKEY("title"));
AddRSSEndHandler(ATOM_item_content_end, RSS_ATOM|RSS_REQUIRE_BUF, HKEY("content"));
AddRSSEndHandler(RSS_item_description_end, RSS_RSS|RSS_ATOM|RSS_REQUIRE_BUF, HKEY("encoded"));