* [sup-devel] Ruby 1.9 encoding fixes @ 2009-12-31 23:36 Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 01/10] open mail source files as binary Rich Lane 2010-01-01 19:09 ` [sup-devel] Ruby 1.9 encoding fixes William Morgan 0 siblings, 2 replies; 19+ messages in thread From: Rich Lane @ 2009-12-31 23:36 UTC (permalink / raw) To: sup-devel This patchset fixes the string encoding issues on Ruby 1.9.1. The general strategy is to treat raw messsages as binary and ensure that everything is passed through Iconv or String#ascii before being displayed or stored. I tested an earlier version of this patchset (with more debug checks) on around 700 thousand mails including plenty of spam. It'd be nice if someone tested signed/encrypted mails to make sure I didn't break anything there. The only effect on Ruby 1.8 should be asciifying the raw header/message view, and maybe a little speedup due to reusing the RMail message header instead of parsing it ourselves. _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* [sup-devel] [PATCH 01/10] open mail source files as binary 2009-12-31 23:36 [sup-devel] Ruby 1.9 encoding fixes Rich Lane @ 2009-12-31 23:36 ` Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 02/10] display_size is just size on Ruby 1.9 Rich Lane 2010-01-01 20:59 ` [sup-devel] [PATCH 01/10] open mail source files as binary Anthony Martinez 2010-01-01 19:09 ` [sup-devel] Ruby 1.9 encoding fixes William Morgan 1 sibling, 2 replies; 19+ messages in thread From: Rich Lane @ 2009-12-31 23:36 UTC (permalink / raw) To: sup-devel --- lib/sup/maildir.rb | 4 ++-- lib/sup/mbox/loader.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/sup/maildir.rb b/lib/sup/maildir.rb index c2bd27a..0852576 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, 'w') do |f| + File.open(tmp_path, 'wb:BINARY') 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) { |f| yield f } + File.open(fn, 'rb:BINARY') { |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 520e2ec..ec28d3b 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 + @f = File.open uri.path, 'rb:BINARY' @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, "a") do |f| + File.open(@filename, "ab:BINARY") do |f| f.puts if need_blank f.puts "From #{from_email} #{date.rfc2822}" yield f -- 1.6.3.3 _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* [sup-devel] [PATCH 02/10] display_size is just size on Ruby 1.9 2009-12-31 23:36 ` [sup-devel] [PATCH 01/10] open mail source files as binary Rich Lane @ 2009-12-31 23:36 ` Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 03/10] add String#check Rich Lane 2010-01-01 20:59 ` [sup-devel] [PATCH 01/10] open mail source files as binary Anthony Martinez 1 sibling, 1 reply; 19+ messages in thread From: Rich Lane @ 2009-12-31 23:36 UTC (permalink / raw) To: sup-devel --- lib/sup/util.rb | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/lib/sup/util.rb b/lib/sup/util.rb index f99e1c1..5f68d0d 100644 --- a/lib/sup/util.rb +++ b/lib/sup/util.rb @@ -177,7 +177,7 @@ class String ## nasty multibyte hack for ruby 1.8. if it's utf-8, split into chars using ## the utf8 regex and count those. otherwise, use the byte length. def display_length - if $encoding == "UTF-8" || $encoding == "utf8" + if RUBY_VERSION < '1.9.1' && ($encoding == "UTF-8" || $encoding == "utf8") scan(/./u).size else size -- 1.6.3.3 _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* [sup-devel] [PATCH 03/10] add String#check 2009-12-31 23:36 ` [sup-devel] [PATCH 02/10] display_size is just size on Ruby 1.9 Rich Lane @ 2009-12-31 23:36 ` Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 04/10] add String#ascii Rich Lane 0 siblings, 1 reply; 19+ messages in thread From: Rich Lane @ 2009-12-31 23:36 UTC (permalink / raw) To: sup-devel --- lib/sup/util.rb | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/lib/sup/util.rb b/lib/sup/util.rb index 5f68d0d..fc90350 100644 --- a/lib/sup/util.rb +++ b/lib/sup/util.rb @@ -296,6 +296,16 @@ class String ## ## split_on will be passed to String#split, so you can leave this nil for space. def to_set_of_symbols split_on=nil; Set.new split(split_on).map { |x| x.strip.intern } end + + class CheckError < ArgumentError; end + def check + begin + fail "unexpected encoding #{encoding}" if respond_to?(:encoding) && !(encoding == Encoding::UTF_8 || encoding == Encoding::ASCII) + fail "invalid encoding" if respond_to?(:valid_encoding?) && !valid_encoding? + rescue + raise CheckError.new($!.message) + end + end end class Numeric -- 1.6.3.3 _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* [sup-devel] [PATCH 04/10] add String#ascii 2009-12-31 23:36 ` [sup-devel] [PATCH 03/10] add String#check Rich Lane @ 2009-12-31 23:36 ` Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 05/10] fixup Iconv#easy_decode for Ruby 1.9 Rich Lane 0 siblings, 1 reply; 19+ messages in thread From: Rich Lane @ 2009-12-31 23:36 UTC (permalink / raw) To: sup-devel --- lib/sup/util.rb | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) diff --git a/lib/sup/util.rb b/lib/sup/util.rb index fc90350..508bcee 100644 --- a/lib/sup/util.rb +++ b/lib/sup/util.rb @@ -306,6 +306,19 @@ class String raise CheckError.new($!.message) end end + + def ascii + out = "" + each_byte do |b| + if (b & 128) != 0 + out << "\\x#{b.to_s 16}" + else + out << b.chr + end + end + out.force_encoding Encoding::UTF_8 if out.respond_to? :force_encoding + out + end end class Numeric -- 1.6.3.3 _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* [sup-devel] [PATCH 05/10] fixup Iconv#easy_decode for Ruby 1.9 2009-12-31 23:36 ` [sup-devel] [PATCH 04/10] add String#ascii Rich Lane @ 2009-12-31 23:36 ` Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 06/10] add String#transcode Rich Lane 0 siblings, 1 reply; 19+ messages in thread From: Rich Lane @ 2009-12-31 23:36 UTC (permalink / raw) To: sup-devel --- lib/sup/util.rb | 21 +++++++++++++-------- 1 files changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/sup/util.rb b/lib/sup/util.rb index 508bcee..560ac73 100644 --- a/lib/sup/util.rb +++ b/lib/sup/util.rb @@ -664,21 +664,26 @@ class FinishLine end class Iconv - def self.easy_decode target, charset, text - return text if charset =~ /^(x-unknown|unknown[-_ ]?8bit|ascii[-_ ]?7[-_ ]?bit)$/i - charset = case charset + def self.easy_decode target, orig_charset, text + if text.respond_to? :force_encoding + text = text.dup + text.force_encoding Encoding::BINARY + end + charset = case orig_charset when /UTF[-_ ]?8/i then "utf-8" when /(iso[-_ ])?latin[-_ ]?1$/i then "ISO-8859-1" when /iso[-_ ]?8859[-_ ]?15/i then 'ISO-8859-15' when /unicode[-_ ]1[-_ ]1[-_ ]utf[-_]7/i then "utf-7" - else charset + when /^euc$/i then 'EUC-JP' # XXX try them all? + when /^(x-unknown|unknown[-_ ]?8bit|ascii[-_ ]?7[-_ ]?bit)$/i then 'ASCII' + else orig_charset end begin - Iconv.iconv(target + "//IGNORE", charset, text + " ").join[0 .. -2] - rescue Errno::EINVAL, Iconv::InvalidEncoding, Iconv::InvalidCharacter, Iconv::IllegalSequence => e - warn "couldn't transcode text from #{charset} to #{target} (\"#{text[0 ... 20]}\"...) (got #{e.message}); using original as is" - text + returning(Iconv.iconv(target, charset, text + " ").join[0 .. -2]) { |str| str.check } + rescue Errno::EINVAL, Iconv::InvalidEncoding, Iconv::InvalidCharacter, Iconv::IllegalSequence, String::CheckError + warn "couldn't transcode text from #{orig_charset} (#{charset}) to #{target}) (#{text[0 ... 20].inspect}...) (got #{$!.message} (#{$!.class}))" + text.ascii end end end -- 1.6.3.3 _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* [sup-devel] [PATCH 06/10] add String#transcode 2009-12-31 23:36 ` [sup-devel] [PATCH 05/10] fixup Iconv#easy_decode for Ruby 1.9 Rich Lane @ 2009-12-31 23:36 ` Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 07/10] transcode output from mime-decode hook too Rich Lane 0 siblings, 1 reply; 19+ messages in thread From: Rich Lane @ 2009-12-31 23:36 UTC (permalink / raw) To: sup-devel --- lib/sup/util.rb | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/lib/sup/util.rb b/lib/sup/util.rb index 560ac73..c27e527 100644 --- a/lib/sup/util.rb +++ b/lib/sup/util.rb @@ -319,6 +319,10 @@ class String out.force_encoding Encoding::UTF_8 if out.respond_to? :force_encoding out end + + def transcode src_encoding=$encoding + Iconv.easy_decode $encoding, src_encoding, self + end end class Numeric -- 1.6.3.3 _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* [sup-devel] [PATCH 07/10] transcode output from mime-decode hook too 2009-12-31 23:36 ` [sup-devel] [PATCH 06/10] add String#transcode Rich Lane @ 2009-12-31 23:36 ` Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 08/10] decode raw header/message to ascii before viewing Rich Lane 0 siblings, 1 reply; 19+ messages in thread From: Rich Lane @ 2009-12-31 23:36 UTC (permalink / raw) To: sup-devel --- lib/sup/message-chunks.rb | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/lib/sup/message-chunks.rb b/lib/sup/message-chunks.rb index 581b707..6328f1f 100644 --- a/lib/sup/message-chunks.rb +++ b/lib/sup/message-chunks.rb @@ -99,7 +99,7 @@ EOS text = case @content_type when /^text\/plain\b/ - Iconv.easy_decode $encoding, encoded_content.charset || $encoding, @raw_content + @raw_content else HookManager.run "mime-decode", :content_type => content_type, :filename => lambda { write_to_disk }, @@ -109,6 +109,7 @@ EOS @lines = nil if text + text = text.transcode(encoded_content.charset || $encoding) @lines = text.gsub("\r\n", "\n").gsub(/\t/, " ").gsub(/\r/, "").split("\n") @lines = lines.map {|l| l.chomp.wrap WRAP_LEN}.flatten @quotable = true -- 1.6.3.3 _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* [sup-devel] [PATCH 08/10] decode raw header/message to ascii before viewing 2009-12-31 23:36 ` [sup-devel] [PATCH 07/10] transcode output from mime-decode hook too Rich Lane @ 2009-12-31 23:36 ` Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 09/10] use header from the RMail::Message in Message#parse_header Rich Lane 0 siblings, 1 reply; 19+ messages in thread From: Rich Lane @ 2009-12-31 23:36 UTC (permalink / raw) To: sup-devel --- lib/sup/modes/thread-view-mode.rb | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/sup/modes/thread-view-mode.rb b/lib/sup/modes/thread-view-mode.rb index 8b5642e..52b54dd 100644 --- a/lib/sup/modes/thread-view-mode.rb +++ b/lib/sup/modes/thread-view-mode.rb @@ -148,14 +148,14 @@ EOS def show_header m = @message_lines[curpos] or return BufferManager.spawn_unless_exists("Full header for #{m.id}") do - TextMode.new m.raw_header + TextMode.new m.raw_header.ascii end end def show_message m = @message_lines[curpos] or return BufferManager.spawn_unless_exists("Raw message for #{m.id}") do - TextMode.new m.raw_message + TextMode.new m.raw_message.ascii end end -- 1.6.3.3 _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* [sup-devel] [PATCH 09/10] use header from the RMail::Message in Message#parse_header 2009-12-31 23:36 ` [sup-devel] [PATCH 08/10] decode raw header/message to ascii before viewing Rich Lane @ 2009-12-31 23:36 ` Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 10/10] decode header fields of enclosed messages Rich Lane 0 siblings, 1 reply; 19+ messages in thread From: Rich Lane @ 2009-12-31 23:36 UTC (permalink / raw) To: sup-devel --- lib/sup/message.rb | 24 ++++++++++++++---------- 1 files changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/sup/message.rb b/lib/sup/message.rb index f3ac874..519243a 100644 --- a/lib/sup/message.rb +++ b/lib/sup/message.rb @@ -31,6 +31,7 @@ class Message MAX_SIG_DISTANCE = 15 # lines from the end DEFAULT_SUBJECT = "" DEFAULT_SENDER = "(missing sender)" + MAX_HEADER_VALUE_SIZE = 4096 attr_reader :id, :date, :from, :subj, :refs, :replytos, :to, :source, :cc, :bcc, :labels, :attachments, :list_address, :recipient_email, :replyto, @@ -59,13 +60,15 @@ class Message #parse_header(opts[:header] || @source.load_header(@source_info)) end - def parse_header header - ## forcibly decode these headers from and to the current encoding, - ## which serves to strip out characters that aren't displayable - ## (and which would otherwise be screwing up the display) - %w(from to subject cc bcc).each do |f| - header[f] = Iconv.easy_decode($encoding, $encoding, header[f]) if header[f] - end + def decode_header_field v + return unless v + return v unless v.is_a? String + return unless v.size < MAX_HEADER_VALUE_SIZE # avoid regex blowup on spam + Rfc2047.decode_to $encoding, Iconv.easy_decode($encoding, 'ASCII', v) + end + + def parse_header encoded_header + header = SavingHash.new { |k| decode_header_field encoded_header[k] } @id = if header["message-id"] mid = header["message-id"] =~ /<(.+?)>/ ? $1 : header["message-id"] @@ -100,7 +103,7 @@ class Message Time.now end - @subj = header.member?("subject") ? header["subject"].gsub(/\s+/, " ").gsub(/\s+$/, "") : DEFAULT_SUBJECT + @subj = header["subject"] ? header["subject"].gsub(/\s+/, " ").gsub(/\s+$/, "") : DEFAULT_SUBJECT @to = Person.from_address_list header["to"] @cc = Person.from_address_list header["cc"] @bcc = Person.from_address_list header["bcc"] @@ -235,8 +238,9 @@ class Message ## bloat the index. ## actually, it's also the differentiation between to/cc/bcc, ## so i will keep this. - parse_header @source.load_header(@source_info) - message_to_chunks @source.load_message(@source_info) + rmsg = @source.load_message(@source_info) + parse_header rmsg.header + message_to_chunks rmsg rescue SourceError, SocketError => e warn "problem getting messages from #{@source}: #{e.message}" ## we need force_to_top here otherwise this window will cover -- 1.6.3.3 _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* [sup-devel] [PATCH 10/10] decode header fields of enclosed messages 2009-12-31 23:36 ` [sup-devel] [PATCH 09/10] use header from the RMail::Message in Message#parse_header Rich Lane @ 2009-12-31 23:36 ` Rich Lane 0 siblings, 0 replies; 19+ messages in thread From: Rich Lane @ 2009-12-31 23:36 UTC (permalink / raw) To: sup-devel --- lib/sup/message.rb | 13 +++++-------- 1 files changed, 5 insertions(+), 8 deletions(-) diff --git a/lib/sup/message.rb b/lib/sup/message.rb index 519243a..ff05df6 100644 --- a/lib/sup/message.rb +++ b/lib/sup/message.rb @@ -446,15 +446,12 @@ private from = payload.header.from.first ? payload.header.from.first.format : "" to = payload.header.to.map { |p| p.format }.join(", ") cc = payload.header.cc.map { |p| p.format }.join(", ") - subj = payload.header.subject - subj = subj ? Message.normalize_subj(payload.header.subject.gsub(/\s+/, " ").gsub(/\s+$/, "")) : subj - if Rfc2047.is_encoded? subj - subj = Rfc2047.decode_to $encoding, subj - end + subj = decode_header_field(payload.header.subject) || DEFAULT_SUBJECT + subj = Message.normalize_subj(subj.gsub(/\s+/, " ").gsub(/\s+$/, "")) msgdate = payload.header.date - from_person = from ? Person.from_address(from) : nil - to_people = to ? Person.from_address_list(to) : nil - cc_people = cc ? Person.from_address_list(cc) : nil + from_person = from ? Person.from_address(decode_header_field from) : nil + to_people = to ? Person.from_address_list(decode_header_field to) : nil + cc_people = cc ? Person.from_address_list(decode_header_field cc) : nil [Chunk::EnclosedMessage.new(from_person, to_people, cc_people, msgdate, subj)] + message_to_chunks(payload, encrypted) else debug "no body for message/rfc822 enclosure; skipping" -- 1.6.3.3 _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [sup-devel] [PATCH 01/10] open mail source files as binary 2009-12-31 23:36 ` [sup-devel] [PATCH 01/10] open mail source files as binary Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 02/10] display_size is just size on Ruby 1.9 Rich Lane @ 2010-01-01 20:59 ` Anthony Martinez 2010-01-01 21:43 ` William Morgan 1 sibling, 1 reply; 19+ messages in thread From: Anthony Martinez @ 2010-01-01 20:59 UTC (permalink / raw) To: sup-devel Excerpts from Rich Lane's message of Thu Dec 31 16:36:49 -0700 2009: > diff --git a/lib/sup/maildir.rb b/lib/sup/maildir.rb > index c2bd27a..0852576 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, 'w') do |f| > + File.open(tmp_path, 'wb:BINARY') do |f| > yield f #provide a writable interface for the caller This patch causes the following warning on Ruby 1.8: warning: encoding options not supported in 1.8: wb:BINARY Especially if you use Maildir for a source, the resulting torrent of warnings makes Sup a bit difficult to use. I've gone and reverted this diff locally for now. I suppose I could also stop running sup with the -w flag... _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [sup-devel] [PATCH 01/10] open mail source files as binary 2010-01-01 20:59 ` [sup-devel] [PATCH 01/10] open mail source files as binary Anthony Martinez @ 2010-01-01 21:43 ` William Morgan 2010-01-01 21:48 ` Rich Lane 2010-01-02 1:16 ` Anthony Martinez 0 siblings, 2 replies; 19+ messages in thread From: William Morgan @ 2010-01-01 21:43 UTC (permalink / raw) To: sup-devel Reformatted excerpts from Anthony Martinez's message of 2010-01-01: > Especially if you use Maildir for a source, the resulting torrent of > warnings makes Sup a bit difficult to use. > > I've gone and reverted this diff locally for now. I suppose I could > also stop running sup with the -w flag... I'm happy with either wrapping that whole thing in a RUBY_VERSION test, or mandating that thou shalt not run sup with -w. Votes? -- William <wmorgan-sup@masanjin.net> _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [sup-devel] [PATCH 01/10] open mail source files as binary 2010-01-01 21:43 ` William Morgan @ 2010-01-01 21:48 ` Rich Lane 2010-01-01 21:57 ` William Morgan 2010-01-02 1:16 ` Anthony Martinez 1 sibling, 1 reply; 19+ messages in thread From: Rich Lane @ 2010-01-01 21:48 UTC (permalink / raw) To: sup-devel Excerpts from William Morgan's message of Fri Jan 01 16:43:13 -0500 2010: > Reformatted excerpts from Anthony Martinez's message of 2010-01-01: > > Especially if you use Maildir for a source, the resulting torrent of > > warnings makes Sup a bit difficult to use. > > > > I've gone and reverted this diff locally for now. I suppose I could > > also stop running sup with the -w flag... > > I'm happy with either wrapping that whole thing in a RUBY_VERSION test, > or mandating that thou shalt not run sup with -w. Votes? It doesn't sound very useful to have -w writing messages to the screen in an ncurses app. Could you redirect stderr to a file instead? Is it possible to do this from inside Sup? That warning's existence annoys me. I thought it was a feature that Ruby 1.8 ignored the encoding in the mode string. _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [sup-devel] [PATCH 01/10] open mail source files as binary 2010-01-01 21:48 ` Rich Lane @ 2010-01-01 21:57 ` William Morgan 0 siblings, 0 replies; 19+ messages in thread From: William Morgan @ 2010-01-01 21:57 UTC (permalink / raw) To: sup-devel Reformatted excerpts from Rich Lane's message of 2010-01-01: > It doesn't sound very useful to have -w writing messages to the screen > in an ncurses app. Could you redirect stderr to a file instead? Is it > possible to do this from inside Sup? Some experimentation suggests we can do $stderr = File.open(File.join(BASE_DIR, "warnings.txt"), "w") and subsequent warns go to that file. At least, it works in irb. > That warning's existence annoys me. I thought it was a feature that > Ruby 1.8 ignored the encoding in the mode string. Yeah, lame. -- William <wmorgan-sup@masanjin.net> _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [sup-devel] [PATCH 01/10] open mail source files as binary 2010-01-01 21:43 ` William Morgan 2010-01-01 21:48 ` Rich Lane @ 2010-01-02 1:16 ` Anthony Martinez 1 sibling, 0 replies; 19+ messages in thread From: Anthony Martinez @ 2010-01-02 1:16 UTC (permalink / raw) To: sup-devel Excerpts from William Morgan's message of Fri Jan 01 14:43:13 -0700 2010: > Reformatted excerpts from Anthony Martinez's message of 2010-01-01: > > Especially if you use Maildir for a source, the resulting torrent of > > warnings makes Sup a bit difficult to use. > > > > I've gone and reverted this diff locally for now. I suppose I could > > also stop running sup with the -w flag... > > I'm happy with either wrapping that whole thing in a RUBY_VERSION test, > or mandating that thou shalt not run sup with -w. Votes? Well... the only reason I ran it with warnings enabled to begin with: $ ack -a --nogroup ' -w' HACKING:6: ruby -I lib -w bin/sup I think redirecting stderr to .sup/warnings is the way to go. _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [sup-devel] Ruby 1.9 encoding fixes 2009-12-31 23:36 [sup-devel] Ruby 1.9 encoding fixes Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 01/10] open mail source files as binary Rich Lane @ 2010-01-01 19:09 ` William Morgan [not found] ` <1262442839-sup-7738@peray> 1 sibling, 1 reply; 19+ messages in thread From: William Morgan @ 2010-01-01 19:09 UTC (permalink / raw) To: sup-devel Branch ruby-1.9-encoding, merged into next. Thank you very much! Using the xapian-full and ncursesw gems, I can now run Sup under 1.9, though there are a few warts (for some reason the secondary questions like "are you sure you want to quit?" aren't getting keystrokes.) Anyways, getting close! -- William <wmorgan-sup@masanjin.net> _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
[parent not found: <1262442839-sup-7738@peray>]
* Re: [sup-devel] Ruby 1.9 encoding fixes [not found] ` <1262442839-sup-7738@peray> @ 2010-01-03 14:48 ` William Morgan 2010-01-03 15:48 ` Nicolas Pouillard 0 siblings, 1 reply; 19+ messages in thread From: William Morgan @ 2010-01-03 14:48 UTC (permalink / raw) To: sup-devel Reformatted excerpts from Nicolas Pouillard's message of 2010-01-02: > Gem files will remain installed in /home/ertai/.gem/ruby/1.8/gems/xapian-full-1.1.3 for inspection. > Results logged to /home/ertai/.gem/ruby/1.8/gems/xapian-full-1.1.3/gem_make.out Anything interested in that file? -- William <wmorgan-sup@masanjin.net> _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [sup-devel] Ruby 1.9 encoding fixes 2010-01-03 14:48 ` William Morgan @ 2010-01-03 15:48 ` Nicolas Pouillard 0 siblings, 0 replies; 19+ messages in thread From: Nicolas Pouillard @ 2010-01-03 15:48 UTC (permalink / raw) To: William Morgan; +Cc: sup-devel [-- Attachment #1: Type: text/plain, Size: 457 bytes --] Excerpts from William Morgan's message of Sun Jan 03 15:48:22 +0100 2010: > Reformatted excerpts from Nicolas Pouillard's message of 2010-01-02: > > Gem files will remain installed in /home/ertai/.gem/ruby/1.8/gems/xapian-full-1.1.3 for inspection. > > Results logged to /home/ertai/.gem/ruby/1.8/gems/xapian-full-1.1.3/gem_make.out > > Anything interested in that file? No. But I attach it just in case. -- Nicolas Pouillard http://nicolaspouillard.fr [-- Attachment #2: gem_make.out.gz --] [-- Type: application/x-gzip, Size: 25765 bytes --] [-- Attachment #3: Type: text/plain, Size: 143 bytes --] _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2010-01-03 15:49 UTC | newest] Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2009-12-31 23:36 [sup-devel] Ruby 1.9 encoding fixes Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 01/10] open mail source files as binary Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 02/10] display_size is just size on Ruby 1.9 Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 03/10] add String#check Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 04/10] add String#ascii Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 05/10] fixup Iconv#easy_decode for Ruby 1.9 Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 06/10] add String#transcode Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 07/10] transcode output from mime-decode hook too Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 08/10] decode raw header/message to ascii before viewing Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 09/10] use header from the RMail::Message in Message#parse_header Rich Lane 2009-12-31 23:36 ` [sup-devel] [PATCH 10/10] decode header fields of enclosed messages Rich Lane 2010-01-01 20:59 ` [sup-devel] [PATCH 01/10] open mail source files as binary Anthony Martinez 2010-01-01 21:43 ` William Morgan 2010-01-01 21:48 ` Rich Lane 2010-01-01 21:57 ` William Morgan 2010-01-02 1:16 ` Anthony Martinez 2010-01-01 19:09 ` [sup-devel] Ruby 1.9 encoding fixes William Morgan [not found] ` <1262442839-sup-7738@peray> 2010-01-03 14:48 ` William Morgan 2010-01-03 15:48 ` Nicolas Pouillard
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox