class Loader < Source
yaml_properties :uri, :cur_offset, :usual, :archived, :id, :labels
+ attr_accessor :labels
## uri_or_fp is horrific. need to refactor.
def initialize uri_or_fp, start_offset=nil, usual=true, archived=false, id=nil, labels=[]
if File.dirname(path) =~ /\b(var|usr|spool)\b/
[]
else
- [File.basename(path).intern]
+ [File.basename(path).downcase.intern]
end
end
unless l =~ BREAK_RE
raise OutOfSyncSourceError, "mismatch in mbox file offset #{offset.inspect}: #{l.inspect}."
end
- header = MBox::read_header @f
+ header = parse_raw_email_header @f
end
header
end
@f.seek offset
begin
RMail::Mailbox::MBoxReader.new(@f).each_message do |input|
- return RMail::Parser.read(input)
+ m = RMail::Parser.read(input)
+ if m.body && m.body.is_a?(String)
+ m.body.gsub!(/^>From /, "From ")
+ end
+ return m
end
rescue RMail::Parser::Error => e
raise FatalSourceError, "error parsing mbox file: #{e.message}"
ret = ""
@mutex.synchronize do
@f.seek offset
- until @f.eof? || (l = @f.gets) =~ /^$/
- ret += l
+ until @f.eof? || (l = @f.gets) =~ /^\r*$/
+ ret << l
end
end
ret
def raw_message offset
ret = ""
- each_raw_message_line(offset) { |l| ret += l }
+ each_raw_message_line(offset) { |l| ret << l }
ret
end
end
self.cur_offset = next_offset
- [returned_offset, (@labels + [:unread]).uniq]
+ [returned_offset, (self.labels + [:unread]).uniq]
end
end