# File lib/file/tail.rb, line 44
      def self.open(filename, opts = {}, &block) # :yields: file
        file = new filename
        opts.each do |o, v|
          writer = o.to_s + "=" 
          file.__send__(writer, v) if file.respond_to? writer
        end
        if opts.key?(:wind) or opts.key?(:rewind)
          warn ":wind and :rewind options are deprecated, "\
            "use :forward and :backward instead!"
        end
        if backward = opts[:backward] || opts[:rewind]
          (args = []) << backward
          args << opt[:bufsiz] if opts[:bufsiz]
          file.backward(*args)
        elsif forward = opts[:forward] || opts[:wind]
          file.forward(forward)
        end
        if opts[:after_reopen]
          file.after_reopen(&opts[:after_reopen])
        end
        if block_given?
          begin
            block.call file
          ensure
            file.close
            nil
          end
        else
          file
        end
      end