func readPartial(c *Cmp, r io.Reader, buf []byte, n1, n2 int) (int, error) {
	for n1 < n2 {
		n, err := c.read(r, buf[n1:n2])
		n1 += n
		if err != nil {
			return n1, err
		}
	}
	return n1, nil
}
func readPartial(c *Cmp, r io.Reader, buf []byte, n1, n2 int) (int, error) {
	for n1 < n2 {
		n, err := c.read(r, buf[n1:n2])
		n1 += n
		if err != nil {
			return n1, err
		}
	}
	return n1, nil
}
func readPartial ( c * Cmp , r io . Reader , buf [ ] byte , n1 , n2 int ) ( int , error ) { for n1 < n2 { n , err := c . read ( r , buf [ n1 : n2 ] ) n1 += n if err != nil { return n1 , err } } return n1 , nil }
// readPartial keeps reading from reader into provided buffer,
// until buffer size reaches exactly n2. n1 is initial buffer size.
// useful to ensure we get an specific buffer size from reader,
// withstanding partial reads.
readPartial keeps reading from reader into provided buffer until buffer size reaches exactly n2 . n1 is initial buffer size . useful to ensure we get an specific buffer size from reader withstanding partial reads .