--- /Users/ben/Desktop/feedparser.orig.py +++ feedparser.py @@ -441,8 +441,7 @@ lastvalue.append(line) continue if lastheader: - # XXX reconsider the joining of folded lines - lhdr = EMPTYSTRING.join(lastvalue)[:-1].rstrip('\r\n') + lhdr = self._fold(lastheader, lastvalue) self._cur[lastheader] = lhdr lastheader, lastvalue = '', [] # Check for envelope header, i.e. unix-from @@ -476,5 +475,10 @@ lastvalue = [line[i+1:].lstrip()] # Done with all the lines, so handle the last header. if lastheader: - # XXX reconsider the joining of folded lines - self._cur[lastheader] = EMPTYSTRING.join(lastvalue).rstrip('\r\n') + self._cur[lastheader] = self._fold(lastheader, lastvalue) + + def _fold(self, header, lines): + if header.lower() in ['subject', 'comments', 'keywords']: + return EMPTYSTRING.join([l.rstrip('\r\n') for l in lines]) + else: + return EMPTYSTRING.join(lines)[:-1].rstrip('\r\n')