From: Rich Lane <rlane@club.cc.cmu.edu>
To: sup-devel@rubyforge.org
Subject: [sup-devel] [PATCH] only open mail files in binary mode on Ruby 1.9
Date: Mon, 4 Jan 2010 11:45:42 -0800 [thread overview]
Message-ID: <1262634342-7029-1-git-send-email-rlane@club.cc.cmu.edu> (raw)
---
lib/sup/maildir.rb | 4 ++--
lib/sup/mbox/loader.rb | 4 ++--
lib/sup/util.rb | 7 +++++++
3 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/lib/sup/maildir.rb b/lib/sup/maildir.rb
index 0852576..b2c5847 100644
--- 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
index ec28d3b..557c13b 100644
--- 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
@@ -114,7 +114,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
index c27e527..e8f3289 100644
--- a/lib/sup/util.rb
+++ b/lib/sup/util.rb
@@ -691,3 +691,10 @@ class Iconv
end
end
end
+
+class File
+ def self.open_binary filename, mode
+ mode += 'b:BINARY' if String.method_defined? :encoding
+ open filename, mode
+ end
+end
--
1.6.3.3
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
next reply other threads:[~2010-01-04 19:45 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-04 19:45 Rich Lane [this message]
2010-01-05 22:05 ` William Morgan
2010-01-06 16:35 ` William Morgan
2010-01-17 23:12 ` William Morgan
2010-01-18 8:38 ` Gaute Hope
2010-01-18 13:05 ` William Morgan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1262634342-7029-1-git-send-email-rlane@club.cc.cmu.edu \
--to=rlane@club.cc.cmu.edu \
--cc=sup-devel@rubyforge.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox