class Gem::Package::TarReader

def each

def each
  return enum_for __method__ unless block_given?
  until @io.eof? do
    begin
      header = Gem::Package::TarHeader.from @io
    rescue ArgumentError => e
      # Specialize only exceptions from Gem::Package::TarHeader.strict_oct
      raise e unless e.message.match?(/ is not an octal string$/)
      raise Gem::Package::TarInvalidError, e.message
    end
    return if header.empty?
    entry = Gem::Package::TarReader::Entry.new header, @io
    yield entry
    entry.close
  end
end