+
+typedef struct __RSSVetoInfo {
+ StrBuf *ErrMsg;
+ time_t Now;
+ int Veto;
+}RSSVetoInfo;
+
+void rssclient_veto_scan_room(struct ctdlroom *qrbuf, void *data, OneRoomNetCfg *OneRNCFG)
+{
+ RSSVetoInfo *Info = (RSSVetoInfo *) data;
+ const RSSCfgLine *RSSCfg = (RSSCfgLine *)OneRNCFG->NetConfigs[rssclient];
+
+ while (RSSCfg != NULL)
+ {
+ if ((RSSCfg->last_known_good != 0) &&
+ (RSSCfg->last_known_good + USETABLE_ANTIEXPIRE < Info->Now))
+ {
+ StrBufAppendPrintf(Info->ErrMsg,
+ "RSS feed not seen for a %d days:: <",
+ (Info->Now - RSSCfg->last_known_good) / (24 * 60 * 60));
+
+ StrBufAppendBuf(Info->ErrMsg, RSSCfg->Url, 0);
+ StrBufAppendBufPlain(Info->ErrMsg, HKEY(">\n"), 0);
+ }
+ RSSCfg = RSSCfg->next;
+ }
+}
+
+int RSSCheckUsetableVeto(StrBuf *ErrMsg)
+{
+ RSSVetoInfo Info;
+
+ Info.ErrMsg = ErrMsg;
+ Info.Now = time (NULL);
+ Info.Veto = 0;
+
+ CtdlForEachNetCfgRoom(rssclient_veto_scan_room, &Info, rssclient);
+
+ return Info.Veto;;
+}
+
+
+
+
+void ParseRSSClientCfgLine(const CfgLineType *ThisOne, StrBuf *Line, const char *LinePos, OneRoomNetCfg *OneRNCFG)
+{
+ RSSCfgLine *RSSCfg;
+
+ RSSCfg = (RSSCfgLine *) malloc (sizeof(RSSCfgLine));
+ RSSCfg->Url = NewStrBufPlain (NULL, StrLength (Line));
+
+
+ StrBufExtract_NextToken(RSSCfg->Url, Line, &LinePos, '|');
+ RSSCfg->last_known_good = StrBufExtractNext_long(Line, &LinePos, '|');
+
+
+ RSSCfg->next = (RSSCfgLine *)OneRNCFG->NetConfigs[ThisOne->C];
+ OneRNCFG->NetConfigs[ThisOne->C] = (RoomNetCfgLine*) RSSCfg;
+}
+
+void SerializeRSSClientCfgLine(const CfgLineType *ThisOne, StrBuf *OutputBuffer, OneRoomNetCfg *RNCfg, RoomNetCfgLine *data)
+{
+ RSSCfgLine *RSSCfg = (RSSCfgLine*) data;
+
+ StrBufAppendBufPlain(OutputBuffer, CKEY(ThisOne->Str), 0);
+ StrBufAppendBufPlain(OutputBuffer, HKEY("|"), 0);
+ StrBufAppendBufPlain(OutputBuffer, SKEY(RSSCfg->Url), 0);
+ StrBufAppendPrintf(OutputBuffer, "|%ld\n", RSSCfg->last_known_good);
+}
+
+void DeleteRSSClientCfgLine(const CfgLineType *ThisOne, RoomNetCfgLine **data)
+{
+ RSSCfgLine *RSSCfg = (RSSCfgLine*) *data;
+
+ FreeStrBuf(&RSSCfg->Url);
+ free(*data);
+ *data = NULL;
+}
+
+