What about this patch? Excerpts from Nicolas Pouillard's message of Fri Apr 04 18:09:13 +0200 2008: > This seems to happen when one don't touch the forwarded > email. Indeed most of the sup's code tend to assume that > messages body are reprensented using an array of string > *without* a trailing \n, except some parts of the code. > > This patch enforce that. It could become even more strict > by raising an error instead of logging in join_lines. > --- > lib/sup/modes/edit-message-mode.rb | 11 +++++------ > lib/sup/util.rb | 6 ++++++ > 2 files changed, 11 insertions(+), 6 deletions(-) > > diff --git a/lib/sup/modes/edit-message-mode.rb > b/lib/sup/modes/edit-message-mode.rb > index dd96002..c3634af 100644 > --- a/lib/sup/modes/edit-message-mode.rb > +++ b/lib/sup/modes/edit-message-mode.rb > @@ -216,7 +216,7 @@ protected > def parse_file fn > File.open(fn) do |f| > header = MBox::read_header f > - body = f.readlines > + body = f.readlines.map { |l| l.chomp } > > header.delete_if { |k, v| NON_EDITABLE_HEADERS.member? k } > header.each { |k, v| header[k] = parse_header k, v } > @@ -307,9 +307,8 @@ protected > def build_message date > m = RMail::Message.new > m.header["Content-Type"] = "text/plain; charset=#{$encoding}" > - m.body = @body.join > - m.body = m.body > - m.body += sig_lines.join("\n") unless $config[:edit_signature] > + m.body = @body.join_lines > + m.body += sig_lines.join_lines unless $config[:edit_signature] > > ## there are attachments, so wrap body in an attachment of its own > unless @attachments.empty? > @@ -367,7 +366,7 @@ EOS > end > > f.puts > - f.puts sanitize_body(@body.join) > + f.puts sanitize_body(@body.join_lines) > f.puts sig_lines if full unless $config[:edit_signature] > end > > @@ -412,7 +411,7 @@ private > end > > def top_posting? > - @body.join =~ /(\S+)\s*Excerpts from.*\n(>.*\n)+\s*\Z/ > + @body.join_lines =~ /(\S+)\s*Excerpts from.*\n(>.*\n)+\s*\Z/ > end > > def sig_lines > diff --git a/lib/sup/util.rb b/lib/sup/util.rb > index 99e73b4..544859c 100644 > --- a/lib/sup/util.rb > +++ b/lib/sup/util.rb > @@ -390,6 +390,12 @@ module Enumerable > end > > class Array > + > + def join_lines > + Redwood::log "Some newlines are there..." if any? { |l| l =~ /\n/ } > + map { |l| l.chomp }.join("\n") > + end > + > def flatten_one_level > inject([]) { |a, e| a + e } > end
-- Nicolas Pouillard aka Ertai
signature.asc
Description: PGP signature
_______________________________________________ sup-talk mailing list sup-talk@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-talk