def to_s
flags = 0
flags |= F_SIZE if @size
flags |= F_OWNERGROUP if @owner && @group
flags |= F_PERMISSIONS if @permissions
flags |= F_ACCESSTIME if @atime
flags |= F_CREATETIME if @ctime
flags |= F_MODIFYTIME if @mtime
if @atime_nseconds && @ctime_nseconds && @mtime_nseconds
flags |= F_SUBSECOND_TIMES
end
flags |= F_ACL if @acl
flags |= F_EXTENDED if @extended
buffer = buffers.writer
buffer.write_long flags
buffer.write_byte @type
buffer.write_int64 @size if @size
buffer.write_string @owner, @group if @owner && @group
buffer.write_long @permissions if @permissions
if @atime
buffer.write_int64 @atime
buffer.write_long @atime_nseconds if ( flags & F_SUBSECOND_TIMES != 0 )
end
if @ctime
buffer.write_int64 @ctime
buffer.write_long @ctime_nseconds if ( flags & F_SUBSECOND_TIMES != 0 )
end
if @mtime
buffer.write_int64 @mtime
buffer.write_long @mtime_nseconds if ( flags & F_SUBSECOND_TIMES != 0 )
end
if @acl
acl_buf = buffers.writer
acl_buf.write_long @acl.length
@acl.each do |item|
acl_buf.write_long item.type, item.flag, item.mask
acl_buf.write_string item.who
end
buffer.write_string acl_buf.to_s
end
if @extended
buffer.write_long @extended.length
@extended.each { |k,v| buffer.write_string k, v }
end
buffer.to_s
end