Merge branch 'master' of ssh://git.citadel.org/appl/gitroot/citadel
authorWilfried Goesgens <dothebart@citadel.org>
Thu, 23 Sep 2010 16:22:34 +0000 (18:22 +0200)
committerWilfried Goesgens <dothebart@citadel.org>
Thu, 23 Sep 2010 16:22:34 +0000 (18:22 +0200)
1  2 
citadel/modules/rssclient/serv_rssclient.c

index 90dc55680adc20893bcdc8d578552e3031daab2f,0d8442b41551ba101e2c46196c56594a3dbf26fb..b2cd3747f92ccfad92bbe97544b0fdbdd507882b
@@@ -409,21 -409,14 +409,21 @@@ void rss_save_item(rss_item *ri
                        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);
@@@ -858,13 -845,6 +858,13 @@@ void RSS_item_link_end (StrBuf *CData, 
                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)
  {
@@@ -1285,15 -1265,10 +1285,10 @@@ void rssclient_scan_room(struct ctdlroo
  /*
   * 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;
  }
  
@@@ -1332,7 -1302,7 +1322,7 @@@ CTDL_MODULE_INIT(rssclient
        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"));