def self.from_buffer( buffer )
flags = buffer.read_long
size = buffer.read_int64 if ( flags & F_SIZE ) != 0
uid = buffer.read_long if ( flags & F_UIDGID ) != 0
gid = buffer.read_long if ( flags & F_UIDGID ) != 0
permissions = buffer.read_long if ( flags & F_PERMISSIONS ) != 0
atime = buffer.read_long if ( flags & F_ACMODTIME ) != 0
mtime = buffer.read_long if ( flags & F_ACMODTIME ) != 0
if ( flags & F_EXTENDED ) != 0
extended = Hash.new
buffer.read_long.times do
extended[ buffer.read_string ] = buffer.read_string
end
end
new( size, uid, gid, permissions, atime, mtime, extended )
end