func (r ZipReader) Read(data []byte) (int, error) {
	want := len(data)
	var err error
	var offset int
	var read_len int
	for offset = 0; offset < want && err == nil; read_len, err = r.Source.Read(data[offset:]) {
		offset += read_len
	}
	return offset, err
}
/*
Implement a "ReRead" function. It reads from a Reader and it retries
if it gets fewer bytes than it wanted.  It will always completely fill
the "data" array or return an error.
package fastqreader
import (
	"io"
	"os"
	"os/exec"
)
type ZipReader struct {
	Source io.Reader
	Cmd    *exec.Cmd
}