From b75186533d768de0d2fed362775c6f00f18a5dd3 Mon Sep 17 00:00:00 2001
From: Pauline Middelink <middelin@google.com>
Date: Fri, 10 Mar 2017 22:45:26 +0100
Subject: [PATCH] Restore does not truncate files it restores

Missing O_TRUNC when doing O_CREAT.

Closes #875
---
 src/restic/debug/debug.go | 2 +-
 src/restic/find_test.go   | 2 +-
 src/restic/node.go        | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/restic/debug/debug.go b/src/restic/debug/debug.go
index 9856d9e2c..2d82188ea 100644
--- a/src/restic/debug/debug.go
+++ b/src/restic/debug/debug.go
@@ -53,7 +53,7 @@ func initDebugLogger() {
 	}
 
 	if err != nil && os.IsNotExist(errors.Cause(err)) {
-		f, err = fs.OpenFile(debugfile, os.O_WRONLY|os.O_CREATE, 0600)
+		f, err = fs.OpenFile(debugfile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
 	}
 
 	if err != nil {
diff --git a/src/restic/find_test.go b/src/restic/find_test.go
index effc58f24..f4d7266ee 100644
--- a/src/restic/find_test.go
+++ b/src/restic/find_test.go
@@ -44,7 +44,7 @@ func loadIDSet(t testing.TB, filename string) restic.BlobSet {
 }
 
 func saveIDSet(t testing.TB, filename string, s restic.BlobSet) {
-	f, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE, 0644)
+	f, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
 	if err != nil {
 		t.Fatalf("unable to update golden file %v: %v", filename, err)
 		return
diff --git a/src/restic/node.go b/src/restic/node.go
index 9f416a2a9..7cc750142 100644
--- a/src/restic/node.go
+++ b/src/restic/node.go
@@ -234,7 +234,7 @@ func (node Node) createFileAt(path string, repo Repository, idx *HardlinkIndex)
 		return nil
 	}
 
-	f, err := fs.OpenFile(path, os.O_CREATE|os.O_WRONLY, 0600)
+	f, err := fs.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0600)
 	defer f.Close()
 
 	if err != nil {