    # File lib/facets/more/minitar.rb, line 604
        def each_entry
          loop do
            return if @io.eof?

            header = Archive::Tar::PosixHeader.new_from_stream(@io)
            return if header.empty?

            entry = EntryStream.new(header, @io)
            size  = entry.size

            yield entry

            skip = (512 - (size % 512)) % 512

            if @io.respond_to?(:seek)
                # avoid reading...
              @io.seek(size - entry.bytes_read, IO::SEEK_CUR)
            else
              pending = size - entry.bytes_read
              while pending > 0
                bread = @io.read([pending, 4096].min).size
                raise UnexpectedEOF if @io.eof?
                pending -= bread
              end
            end
            @io.read(skip) # discard trailing zeros
              # make sure nobody can use #read, #getc or #rewind anymore
            entry.close
          end
        end