diff --git a/TODO.md b/TODO.md index f80f0cb..6ab76a6 100644 --- a/TODO.md +++ b/TODO.md @@ -7,3 +7,6 @@ This document contains the list of things which might be added to the library in 2.) Handle documents with unknown content length. 3.) Add support for resuming downloads. (DONE) + +4.) Fix downloads for different disk drives: +warp: rename C:\Users\...\AppData\Roaming/warp/dldata/0dce3722/warp.dl D:\../100MB.bin: The system cannot move the file to a different disk drive. \ No newline at end of file diff --git a/dloader.go b/dloader.go index 43a70ce..8a8221d 100644 --- a/dloader.go +++ b/dloader.go @@ -220,7 +220,10 @@ func (d *Downloader) Start() (err error) { if err != nil { return } - defer d.f.Close() + defer func() { + d.f.Close() + err = os.Rename(d.fName, d.GetSavePath()) + }() d.Log("Starting download...") d.ohmap.Make() partSize, rpartSize := d.getPartSize() @@ -236,7 +239,6 @@ func (d *Downloader) Start() (err error) { d.wg.Wait() d.handlers.DownloadCompleteHandler(MAIN_HASH, d.contentLength.v()) d.Log("All segments downloaded!") - err = os.Rename(d.fName, d.GetSavePath()) return } @@ -252,7 +254,10 @@ func (d *Downloader) Resume(parts map[int64]*ItemPart) (err error) { if err != nil { return } - defer d.f.Close() + defer func() { + d.f.Close() + err = os.Rename(d.fName, d.GetSavePath()) + }() d.Log("Resuming download...") d.ohmap.Make() espeed := 4 * MB / int64(len(parts)) @@ -267,7 +272,6 @@ func (d *Downloader) Resume(parts map[int64]*ItemPart) (err error) { d.wg.Wait() d.handlers.DownloadCompleteHandler(MAIN_HASH, d.contentLength.v()) d.Log("All segments downloaded!") - err = os.Rename(d.fName, d.GetSavePath()) return }