[mew-dist 29406] Re: Mew 6.4 release candidate 1
Takahiro Kambe
taca at example.com
2011年 9月 6日 (火) 20:17:05 JST
こんばんは。
Mew 6.4でも関係するかどうかわかりませんが、cmewで使用している
mailreadはRuby 1.9.2では含まれていません。
さらに、mailread.rbの中身を見るとメール全体を読み込んでいます。必要
なのはヘッダーだけなので以下のような自前の読み込み関数で置き換えて
みました。(Mew 6.3に対するパッチです。)
--
神戸 隆博 / Takahiro Kambe
--- bin/cmew.orig 2009-09-09 00:57:27.000000000 +0000
+++ bin/cmew
@@ -13,7 +13,31 @@ require 'sqlite3'
require 'time'
require 'fileutils'
require 'find'
-require 'mailread'
+
+################################################################
+##
+## mail_header
+##
+## Get header from mail message. If multiple header field
+## exists, last one will be used.
+##
+def mail_header(path)
+ @header = {}
+ value = nil
+ File.open(path) do |f|
+ while l = f.gets.chomp
+ next if /^From / =~ l
+ break if /^$/ =~ l
+ if /^\s+/ !~ l
+ (name, value) = l.split(/:\s+/, 2)
+ @header[name.downcase] = value
+ else
+ value << $'
+ end
+ end
+ end
+ return @header
+end
################################################################
##
@@ -159,7 +183,7 @@ def register(db, maildir, ignore_regex,
elsif st.file? and fpath =~ /\/[0-9]+(\.mew)?$/
next if File.dirname(fpath) == skipdir
next if last_mod > st.ctime.tv_sec
- m = Mail.new(fpath)
+ m = mail_header(fpath) rescue next
id = get_id(m)
parid = get_parid(m)
date = get_date(m)
Mew-dist メーリングリストの案内