不定期日記
J2千葉観戦記, ライブの感想を中心とした備忘録
2009-12-15 (Tue) [長年日記]
_ [ruby][PC] Maildirからmboxに変換するスクリプト
Maildirからmboxにpackするスクリプト書いてみた - 玩具箱 にあるスクリプトを、以下の2点変更してみました。ほとんどそのままです。
- On memory で処理するのではなく、Tempfileに随時書き出す
- "." (ピリオド) で始まるファイル名を無視
#!/usr/local/bin/ruby
require 'tempfile'
def main
maildir = Dir.open(ARGV[0]) rescue usage("can't read directory")
tempmbox = Tempfile.new('maildir2mbox')
maildir.each do |file_name|
next if file_name =~/^\./
path = maildir.path + '/' + file_name
next if File.directory?(path)
file = File.open(path)
mail, from, wday, day, month, year, time = ['']*7
file.each do |line|
if line =~ /^Date:\s+(.+)/
wday, day, month, year, time = $1.delete(',').split(/\s+/).values_at(0, 1, 2, 3, 4)
mail += line
elsif line =~ /^Return-Path:\s+<(.+)>/
from = $1
else
mail += line
end
end
file.close
tempmbox.puts "From #{from} #{wday} #{month} #{day} #{time} #{year}"
tempmbox.print mail
end
maildir.close
tempmbox.close
begin
tempmbox.open
file = File.open(ARGV[1], 'w')
while line = tempmbox.gets
file.write(line)
end
ensure
file.close
tempmbox.close
end
puts 'complete!'
end
def usage message
puts message
puts 'usage: maildir2mbox maildir mbox'
exit
end
main
[ツッコミを入れる]
2020|07|
