Class | TMail::Maildir
In: | lib/tmail/mailbox.rb
Parent: | Object

### Methods

check_tmp close directory each each_new_port each_port inspect new new_port reverse_each reverse_each_port unique_number

### Constants

PORT_CLASS | = | MaildirPort
TOO_OLD | = | 60 * 60 * 36

### Public Class methods

new( dir = nil )

[Source]

    # File lib/tmail/mailbox.rb, line 392
        def initialize( dir = nil )
          @dirname = dir || ENV['MAILDIR']
          raise ArgumentError, "not directory: #{@dirname}"\
                                  unless FileTest.directory? @dirname
          @new = "#{@dirname}/new"
          @tmp = "#{@dirname}/tmp"
          @cur = "#{@dirname}/cur"
        end

unique_number()

[Source]

    # File lib/tmail/mailbox.rb, line 385
        def Maildir.unique_number
          synchronize {
              @seq += 1
              return @seq
          }
        end

### Public Instance methods

check_tmp()

[Source]

    # File lib/tmail/mailbox.rb, line 462
        def check_tmp
          old = Time.now.to_i - TOO_OLD

          each_filename(@tmp) do |full, fname|
            if FileTest.file? full and
               File.stat(full).mtime.to_i < old
              File.unlink full
            end
          end
        end

close()

[Source]

    # File lib/tmail/mailbox.rb, line 409
        def close
        end

directory()

[Source]

    # File lib/tmail/mailbox.rb, line 401
        def directory
          @dirname
        end

each()

Alias for each_port

each_new_port() {|PORT_CLASS.new(dest)| ...}

[Source]

    # File lib/tmail/mailbox.rb, line 450
        def each_new_port
          mail_files(@new).each do |path|
            dest = @cur + '/' + File.basename(path)
            File.rename path, dest
            yield PORT_CLASS.new(dest)
          end

          check_tmp
        end

each_port() {|PORT_CLASS.new(path)| ...}

[Source]

    # File lib/tmail/mailbox.rb, line 412
        def each_port
          mail_files(@cur).each do |path|
            yield PORT_CLASS.new(path)
          end
        end

inspect()

[Source]

    # File lib/tmail/mailbox.rb, line 405
        def inspect
          "#<#{self.class} #{@dirname}>"
        end

new_port() {|f| ...}

[Source]

    # File lib/tmail/mailbox.rb, line 428
        def new_port
          fname = nil
          tmpfname = nil
          newfname = nil

          begin
            fname = "#{Time.now.to_i}.#{$$}_#{Maildir.unique_number}.#{Socket.gethostname}"

            tmpfname = "#{@tmp}/#{fname}"
            newfname = "#{@new}/#{fname}"
          end while FileTest.exist? tmpfname

          if block_given?
            File.open(tmpfname, 'w') {|f| yield f }
            File.rename tmpfname, newfname
            PORT_CLASS.new(newfname)
          else
            File.open(tmpfname, 'w') {|f| f.write "\n\n" }
            PORT_CLASS.new(tmpfname)
          end
        end

reverse_each()

Alias for reverse_each_port

reverse_each_port() {|PORT_CLASS.new(path)| ...}

[Source]

    # File lib/tmail/mailbox.rb, line 420
        def reverse_each_port
          mail_files(@cur).reverse_each do |path|
            yield PORT_CLASS.new(path)
          end
        end

[Validate]