From d0fe9441faa30a41072d923f09ac7a4c6e311465 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Sat, 13 Jun 2015 17:54:41 +0200 Subject: [PATCH] Stream downloaded files directly into a file --- cmd/fdroidcl/http.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmd/fdroidcl/http.go b/cmd/fdroidcl/http.go index 9ec58de..1236bf0 100644 --- a/cmd/fdroidcl/http.go +++ b/cmd/fdroidcl/http.go @@ -5,6 +5,7 @@ package main import ( "errors" + "io" "io/ioutil" "log" "net/http" @@ -40,13 +41,12 @@ func downloadEtag(url, path string) error { if resp.StatusCode == http.StatusNotModified { return errNotModified } - body, err := ioutil.ReadAll(resp.Body) + f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) if err != nil { return err } - err = ioutil.WriteFile(path, body, 0644) - etag := respEtag(resp) - err2 := ioutil.WriteFile(etagPath, []byte(etag), 0644) + _, err = io.Copy(f, resp.Body) + err2 := ioutil.WriteFile(etagPath, []byte(respEtag(resp)), 0644) if err != nil { return err }