from_buffer (Net::SFTP::Protocol::V_04::Attributes)

    # File lib/net/sftp/protocol/04/attributes.rb, line 73
        def self.from_buffer( buffer )
          flags = buffer.read_long

          type = buffer.read_byte
          size = buffer.read_int64 if ( flags & F_SIZE ) != 0
          owner = buffer.read_string if ( flags & F_OWNERGROUP ) != 0
          group = buffer.read_string if ( flags & F_OWNERGROUP ) != 0
          permissions = buffer.read_long if ( flags & F_PERMISSIONS ) != 0
          if ( flags & F_ACCESSTIME ) != 0
            atime = buffer.read_int64
            atime_nseconds = buffer.read_long if ( flags & F_SUBSECOND_TIMES ) != 0
          end
          if ( flags & F_CREATETIME ) != 0
            ctime = buffer.read_int64
            ctime_nseconds = buffer.read_long if ( flags & F_SUBSECOND_TIMES ) != 0
          end
          if ( flags & F_MODIFYTIME ) != 0
            mtime = buffer.read_int64
            mtime_nseconds = buffer.read_long if ( flags & F_SUBSECOND_TIMES ) != 0
          end
          if ( flags & F_ACL ) != 0
            acl_buf = buffers.reader( buffer.read_string )
            acl = []
            acl_buf.read_long.times do
              acl << ACL.new( acl_buf.read_long,
                              acl_buf.read_long,
                              acl_buf.read_long,
                              acl_buf.read_string )
            end
          end

          if ( flags & F_EXTENDED ) != 0
            extended = Hash.new
            buffer.read_long.times do
              extended[ buffer.read_string ] = buffer.read_string
            end
          end

          new( type, size, owner, group, permissions, atime, atime_nseconds,
            ctime, ctime_nseconds, mtime, mtime_nseconds, acl, extended )
        end