# File lib/grit/git-ruby/internal/pack.rb, line 49 def with_idx(index_file = nil) index_file ||= @name[0...-4] + 'idx' begin idxfile = File.open(index_file, 'rb') rescue Errno::ENOENT => boom # file went away. bail out without yielding. return end # read header sig = idxfile.read(4) ver = idxfile.read(4).unpack("N")[0] if sig == PACK_IDX_SIGNATURE if(ver != 2) raise PackFormatError, "pack #@name has unknown pack file version #{ver}" end @version = 2 else @version = 1 end idx = FileWindow.new(idxfile, @version) yield idx idx.unmap ensure idxfile.close if idxfile end