[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 メーリングリストの案内