func (u *Updater) fetchAndApplyPatch(old io.Reader) ([]byte, error) { r, err := u.fetch(u.DiffURL + u.CmdName + "/" + u.CurrentVersion + "/" + u.Info.Version + "/" + plat) if err != nil { return nil, err } defer r.Close() var buf bytes.Buffer err = binarydist.Patch(old, &buf, r) return buf.Bytes(), err }
func applyPatch(patch io.Reader, updatePath string) ([]byte, error) { // open the file to update old, err := os.Open(updatePath) if err != nil { return nil, err } defer old.Close() // apply the patch applied := new(bytes.Buffer) if err = binarydist.Patch(old, applied, patch); err != nil { return nil, err } return applied.Bytes(), nil }