# File lib/archive/support/ioextensions.rb, line 7 def self.read_exactly(io, length, buffer = '') buffer.slice!(0..-1) unless buffer.empty? while buffer.size < length do internal = io.read(length - buffer.size) raise EOFError, 'unexpected end of file' if internal.nil? buffer << internal end buffer end