diff options
| author | Petter Rasmussen | 2016-02-13 18:56:31 +0100 |
|---|---|---|
| committer | Petter Rasmussen | 2016-02-13 18:56:31 +0100 |
| commit | 6d78f27d416bae8d446f495ca5414894410d5e5b (patch) | |
| tree | a306048c435fed7252e9cce9519e2adeddcba40b /drive | |
| parent | 03384c697930351faae77ab6e750a67ce501641d (diff) | |
| download | gdrive-6d78f27d416bae8d446f495ca5414894410d5e5b.tar.bz2 | |
Download to tmp file and rename on success
Diffstat (limited to 'drive')
| -rw-r--r-- | drive/revision_download.go | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/drive/revision_download.go b/drive/revision_download.go index f06dac3..be64187 100644 --- a/drive/revision_download.go +++ b/drive/revision_download.go @@ -49,25 +49,28 @@ func (self *Drive) DownloadRevision(args DownloadRevisionArgs) (err error) { return fmt.Errorf("File '%s' already exists, use --force to overwrite", rev.OriginalFilename) } + // Download to tmp file + tmpPath := rev.OriginalFilename + ".incomplete" + // Create new file - outFile, err := os.Create(rev.OriginalFilename) + outFile, err := os.Create(tmpPath) if err != nil { return fmt.Errorf("Unable to create new file: %s", err) } - // Close file on function exit - defer outFile.Close() - // Save file to disk bytes, err := io.Copy(outFile, srcReader) if err != nil { + outFile.Close() + os.Remove(tmpPath) return fmt.Errorf("Failed saving file: %s", err) } fmt.Fprintf(args.Out, "Downloaded '%s' at %s, total %d\n", rev.OriginalFilename, "x/s", bytes) - //if deleteSourceFile { - // self.Delete(args.Id) - //} - return + // Close File + outFile.Close() + + // Rename tmp file to proper filename + return os.Rename(tmpPath, rev.OriginalFilename) } |
