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 | |
| parent | 03384c697930351faae77ab6e750a67ce501641d (diff) | |
| download | gdrive-6d78f27d416bae8d446f495ca5414894410d5e5b.tar.bz2 | |
Download to tmp file and rename on success
| -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)  } | 
