X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Frssclient%2Fserv_rssclient.c;h=7af7b510398c7e1f05deb9ab8dd9dcad52f0853d;hb=175de9b09446460c4572117c9685ed7e4df14810;hp=85d7f0c1b2675c8e068520790e610e13b7fc4d36;hpb=c60594cc03ecbac2a47863b7d09c9c67913c2817;p=citadel.git diff --git a/citadel/modules/rssclient/serv_rssclient.c b/citadel/modules/rssclient/serv_rssclient.c index 85d7f0c1b..7af7b5103 100644 --- a/citadel/modules/rssclient/serv_rssclient.c +++ b/citadel/modules/rssclient/serv_rssclient.c @@ -118,6 +118,11 @@ void rss_start_element(void *data, const char *el, const char **attribute) void rss_end_element(void *data, const char *el) { struct rssparser *r = (struct rssparser *)data; + StrBuf *encoded_field; + + if (StrLength(r->CData) > 0) { // strip leading/trailing whitespace from field + StrBufTrim(r->CData); + } if ( // end of a new item(rss) or entry(atom) (!strcasecmp(el, "entry")) @@ -199,22 +204,25 @@ void rss_end_element(void *data, const char *el) else if (!strcasecmp(el, "title")) { // item subject (rss and atom) if ((r->msg != NULL) && (CM_IsEmpty(r->msg, eMsgSubject))) { - CM_SetField(r->msg, eMsgSubject, ChrPtr(r->CData), StrLength(r->CData)); - striplt(r->msg->cm_fields[eMsgSubject]); + encoded_field = NewStrBuf(); + StrBufRFC2047encode(&encoded_field, r->CData); + CM_SetAsFieldSB(r->msg, eMsgSubject, &encoded_field); } } else if (!strcasecmp(el, "creator")) { // can be used if is not present if ((r->msg != NULL) && (CM_IsEmpty(r->msg, eAuthor))) { - CM_SetField(r->msg, eAuthor, ChrPtr(r->CData), StrLength(r->CData)); - striplt(r->msg->cm_fields[eAuthor]); + encoded_field = NewStrBuf(); + StrBufRFC2047encode(&encoded_field, r->CData); + CM_SetAsFieldSB(r->msg, eAuthor, &encoded_field); } } else if (!strcasecmp(el, "author")) { // supercedes if both are present if (r->msg != NULL) { - CM_SetField(r->msg, eAuthor, ChrPtr(r->CData), StrLength(r->CData)); // CM_SetField will free() the previous value - striplt(r->msg->cm_fields[eAuthor]); + encoded_field = NewStrBuf(); + StrBufRFC2047encode(&encoded_field, r->CData); + CM_SetAsFieldSB(r->msg, eAuthor, &encoded_field); } } @@ -242,7 +250,6 @@ void rss_end_element(void *data, const char *el) r->link = NULL; } r->link = strdup(ChrPtr(r->CData)); - striplt(r->link); } else if ( @@ -254,7 +261,6 @@ void rss_end_element(void *data, const char *el) r->item_id = NULL; } r->item_id = strdup(ChrPtr(r->CData)); - striplt(r->item_id); } else if ( @@ -267,7 +273,6 @@ void rss_end_element(void *data, const char *el) r->description = NULL; } r->description = strdup(ChrPtr(r->CData)); - striplt(r->description); } if (r->CData != NULL) {