def self.new_from_stream(stream)
data = stream.read(512)
fields = data.unpack(HEADER_UNPACK_FORMAT)
name = fields.shift
mode = fields.shift.oct
uid = fields.shift.oct
gid = fields.shift.oct
size = fields.shift.oct
mtime = fields.shift.oct
checksum = fields.shift.oct
typeflag = fields.shift
linkname = fields.shift
magic = fields.shift
version = fields.shift.oct
uname = fields.shift
gname = fields.shift
devmajor = fields.shift.oct
devminor = fields.shift.oct
prefix = fields.shift
empty = (data == "\0" * 512)
new(:name => name, :mode => mode, :uid => uid, :gid => gid,
:size => size, :mtime => mtime, :checksum => checksum,
:typeflag => typeflag, :magic => magic, :version => version,
:uname => uname, :gname => gname, :devmajor => devmajor,
:devminor => devminor, :prefix => prefix, :empty => empty)
end