From mboxrd@z Thu Jan 1 00:00:00 1970 From: nicolas.pouillard@gmail.com (Nicolas Pouillard) Date: Fri, 4 Apr 2008 18:09:13 +0200 Subject: [sup-talk] [PATCH] Fix a bug about forwarding that trimmed out newlines. Message-ID: <1207325353-7638-1-git-send-email-nicolas.pouillard@gmail.com> 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 -- 1.5.5.rc3