with_idx

in lib/grit/git-ruby/internal/pack.rb [48:77]


        def with_idx(index_file = nil)
          index_file ||= @name[0...-4] + 'idx'

          begin
            idxfile = File.open(index_file, 'rb')
          rescue Errno::ENOENT => boom
            
            return
          end

          
          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