sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit dd6410cbab3cf80b1de2072a946754d87b2a84f9
parent 94d4bbc8f0a32940f22e2910f2046ca9d57db2a5
Author: William Morgan <wmorgan-sup@masanjin.net>
Date:   Tue,  5 Jan 2010 14:03:24 -0800

Merge branch 'ruby-1.9-encoding' into next

Diffstat:
M lib/sup/maildir.rb | 4 ++--
M lib/sup/mbox/loader.rb | 4 ++--
M lib/sup/util.rb | 9 +++++++++
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/lib/sup/maildir.rb b/lib/sup/maildir.rb
@@ -59,7 +59,7 @@ class Maildir < Source
         File.stat(tmp_path)
       rescue Errno::ENOENT #this is what we want.
         begin
-          File.open(tmp_path, 'wb:BINARY') do |f|
+          File.open_binary(tmp_path, 'w') do |f|
             yield f #provide a writable interface for the caller
             f.fsync
           end
@@ -207,7 +207,7 @@ private
   def with_file_for id
     fn = @ids_to_fns[id] or raise OutOfSyncSourceError, "No such id: #{id.inspect}."
     begin
-      File.open(fn, 'rb:BINARY') { |f| yield f }
+      File.open_binary(fn, 'r') { |f| yield f }
     rescue SystemCallError, IOError => e
       raise FatalSourceError, "Problem reading file for id #{id.inspect}: #{fn.inspect}: #{e.message}."
     end
diff --git a/lib/sup/mbox/loader.rb b/lib/sup/mbox/loader.rb
@@ -22,7 +22,7 @@ class Loader < Source
       raise ArgumentError, "not an mbox uri" unless uri.scheme == "mbox"
       raise ArgumentError, "mbox URI ('#{uri}') cannot have a host: #{uri.host}" if uri.host
       raise ArgumentError, "mbox URI must have a path component" unless uri.path
-      @f = File.open uri.path, 'rb:BINARY'
+      @f = File.open_binary uri.path, 'r'
       @path = uri.path
     else
       @f = uri_or_fp
@@ -115,7 +115,7 @@ class Loader < Source
 
   def store_message date, from_email, &block
     need_blank = File.exists?(@filename) && !File.zero?(@filename)
-    File.open(@filename, "ab:BINARY") do |f|
+    File.open_binary(@filename, "a") do |f|
       f.puts if need_blank
       f.puts "From #{from_email} #{date.rfc2822}"
       yield f
diff --git a/lib/sup/util.rb b/lib/sup/util.rb
@@ -697,3 +697,12 @@ class Iconv
     end
   end
 end
+
+class File
+  ## ruby 1.8.5 can't handle the :BINARY flag that ruby 1.9 *requires*.
+  ## SO LAMEEEEEEEEEEEEEEEeeeeeeeeeeeeeeeeeee.
+  def self.open_binary filename, mode, &b
+    mode += 'b:BINARY' if String.method_defined? :encoding
+    open filename, mode, &b
+  end
+end