lib/net/sftp/protocol/05/base.rb
# Sends a FXP_OPEN packet to the server and returns the packet identifier.
# The +flags+ parameter is either an integer (in which case it must be
# a combination of the IO constants) or a string (in which case it must
# be one of the mode strings that IO::open accepts). The +options+
# parameter is a hash that is used to construct a new Attribute object,
# to pass as part of the FXP_OPEN request.
Sends a FXP_OPEN packet to the server and returns the packet identifier.
The +flags+ parameter is either an integer (in which case it must be
a combination of the IO constants) or a string (in which case it must
be one of the mode strings that IO::open accepts). The +options+
parameter is a hash that is used to construct a new Attribute object,
to pass as part of the FXP_OPEN request.
Sends a FXP_OPEN packet to the server and returns the packet identifier . The + flags + parameter is either an integer ( in which case it must be a combination of the IO constants ) or a string ( in which case it must be one of the mode strings that IO :: open accepts ) . The + options + parameter is a hash that is used to construct a new Attribute object to pass as part of the FXP_OPEN request .
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
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
Sends a FXP_OPEN packet to the server and returns the packet identifier.
Sends a FXP_OPEN packet to the server and returns the packet identifier .
path
<not_specific>
flags
<not_specific>
options
<not_specific>