# File lib/grit/git-ruby/internal/pack.rb, line 48
        def with_idx(index_file = nil)
          if !index_file
            index_file = @name
            idxfile = File.open(@name[0...-4]+'idx', 'rb')
          else
            idxfile = File.open(index_file, 'rb')
          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
        end