open (Net::SFTP::Protocol::V05::Base)

    # File lib/net/sftp/protocol/05/base.rb, line 35
        def open(path, flags, options)
          flags = normalize_open_flags(flags)

          sftp_flags, desired_access = if flags & (IO::WRONLY | IO::RDWR) != 0
              open = if flags & (IO::CREAT | IO::EXCL) == (IO::CREAT | IO::EXCL)
                FV5::CREATE_NEW
              elsif flags & (IO::CREAT | IO::TRUNC) == (IO::CREAT | IO::TRUNC)
                FV5::CREATE_TRUNCATE
              elsif flags & IO::CREAT == IO::CREAT
                FV5::OPEN_OR_CREATE
              else
                FV5::OPEN_EXISTING
              end
              access = ACE::Mask::WRITE_DATA | ACE::Mask::WRITE_ATTRIBUTES
              access |= ACE::Mask::READ_DATA | ACE::Mask::READ_ATTRIBUTES if (flags & IO::RDWR) == IO::RDWR
              if flags & IO::APPEND == IO::APPEND
                open |= FV5::APPEND_DATA
                access |= ACE::Mask::APPEND_DATA
              end
              [open, access]
            else
              [FV5::OPEN_EXISTING, ACE::Mask::READ_DATA | ACE::Mask::READ_ATTRIBUTES]
            end

          attributes = attribute_factory.new(options)

          send_request(FXP_OPEN, :string, path, :long, desired_access, :long, sftp_flags, :raw, attributes.to_s)
        end