sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 53a96c24cc37ec36d691c3134ee85f76d52cd567
parent dad36d878f884d9dd90e61da4b792d132c6f5150
Author: Gaute Hope <eg@gaute.vetsj.com>
Date:   Tue,  1 Oct 2013 08:50:55 +0200

Merge #148: Fallback to fix_encoding! when writing message body parts fail

Diffstat:
M lib/sup/modes/edit_message_mode.rb | 10 +++++++++-
M lib/sup/modes/thread_view_mode.rb | 2 +-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/lib/sup/modes/edit_message_mode.rb b/lib/sup/modes/edit_message_mode.rb
@@ -197,7 +197,15 @@ EOS
     @file = Tempfile.new ["sup.#{self.class.name.gsub(/.*::/, '').camel_to_hyphy}", ".eml"]
     @file.puts format_headers(@header - NON_EDITABLE_HEADERS).first
     @file.puts
-    @file.puts @body.join("\n")
+
+    begin
+      text = @body.join("\n")
+    rescue Encoding::CompatibilityError
+      text = @body.map { |x| x.fix_encoding! }.join("\n")
+      debug "encoding problem while writing message, trying to rescue, but expect errors: #{text}"
+    end
+
+    @file.puts text
     @file.puts sig if ($config[:edit_signature] and !@sig_edited)
     @file.close
   end
diff --git a/lib/sup/modes/thread_view_mode.rb b/lib/sup/modes/thread_view_mode.rb
@@ -786,7 +786,7 @@ private
       @person_lines[start] = m.from
       [[prefix_widget, open_widget, new_widget, attach_widget, starred_widget,
         [color,
-        "#{m.from ? m.from.mediumname.fix_encoding! : '?'}, #{m.date.to_nice_s.fix_encoding!} (#{m.date.to_nice_distance_s.fix_encoding!})  #{m.snippet.fix_encoding!}"]]]
+        "#{m.from ? m.from.mediumname.fix_encoding! : '?'}, #{m.date.to_nice_s.fix_encoding!} (#{m.date.to_nice_distance_s.fix_encoding!})  #{m.snippet ? m.snippet.fix_encoding! : ''}"]]]
 
     when :detailed
       @person_lines[start] = m.from