each_entry (Archive::Tar::Minitar::Reader)

         # File lib/archive/tar/minitar.rb, line 604
    604:     def each_entry
    605:       loop do
    606:         return if @io.eof?
    607:
    608:         header = Archive::Tar::PosixHeader.new_from_stream(@io)
    609:         return if header.empty?
    610:
    611:         entry = EntryStream.new(header, @io)
    612:         size  = entry.size
    613:
    614:         yield entry
    615:
    616:         skip = (512 - (size % 512)) % 512
    617:
    618:         if @io.respond_to?(:seek)
    619:             # avoid reading...
    620:           @io.seek(size - entry.bytes_read, IO::SEEK_CUR)
    621:         else
    622:           pending = size - entry.bytes_read
    623:           while pending > 0
    624:             bread = @io.read([pending, 4096].min).size
    625:             raise UnexpectedEOF if @io.eof?
    626:             pending -= bread
    627:           end
    628:         end
    629:         @io.read(skip) # discard trailing zeros
    630:           # make sure nobody can use #read, #getc or #rewind anymore
    631:         entry.close
    632:       end
    633:     end