func OpenReadOnlyFromPath()

in disk.go [31:72]


func OpenReadOnlyFromPath(path string) (*Disk, error) {
	rdr, err := os.Open(path)
	if err != nil {
		return nil, err
	}
	// read header
	var h QFHeader
	if err = binary.Read(rdr, binary.LittleEndian, &h); err != nil {
		return nil, err
	}
	var ext Disk
	ext.f = rdr
	ext.entries = h.Entries
	ext.rBits, ext.rMask, ext.size = initForQuotientBits(uint(h.QBits))
	ext.storageBits = uint(h.StorageBits)
	if h.BitPacked {
		ext.filterRead, err = initPackedDiskReader(rdr)
		if err != nil {
			return nil, err
		}
		if h.StorageBits > 0 {
			ext.storageRead, err = initPackedDiskReader(rdr)
			if err != nil {
				return nil, err
			}
		}
	} else {
		ext.filterRead, err = initUnpackedDiskReader(rdr)
		if err != nil {
			return nil, err
		}
		if h.StorageBits > 0 {
			ext.storageRead, err = initUnpackedDiskReader(rdr)
			if err != nil {
				return nil, err
			}
		}
	}
	// XXX: handle variable hash functions
	ext.hashfn = murmurhash64
	return &ext, nil
}