@@ -78,15 +78,15 @@ func (cData *CommandData) ViewFile(data *DownloadData) {
7878 defer ShredderFile (tmpFile , - 1 )
7979
8080 // Write file
81- if err = writeFile (cData , resp , tmpFile ); err != nil {
81+ if err = writeFile (cData , resp , tmpFile , nil ); err != nil {
8282 return
8383 }
8484
8585 // Preview tempfile
8686 previewFile (tmpFile )
8787 } else {
8888 // Display file in os.Stdout (cli)
89- err = resp .SaveTo (os .Stdout )
89+ err = resp .SaveTo (os .Stdout , nil )
9090 if err != nil {
9191 printResponseError (err , "downloading file" )
9292 return
@@ -133,35 +133,42 @@ func (cData *CommandData) DownloadFile(data *DownloadData) {
133133 return
134134 }
135135
136+ cancel := make (chan bool , 1 )
136137 c := make (chan string , 1 )
137138
138139 go func () {
139- err = writeFile (cData , resp , outFile )
140+ err = writeFile (cData , resp , outFile , cancel )
140141 if err != nil {
141142 // Delete file on error. On checksum error only delete if --verify was passed
142143 if err != libdm .ErrChecksumNotMatch || cData .VerifyFile {
143144 ShredderFile (outFile , - 1 )
144145 }
145146
147+ c <- "exit"
146148 return
147149 }
150+
148151 c <- ""
149152 }()
150153
154+ // Wait for download to be done or delete file on interrupt
151155 awaitOrInterrupt (c , func (s os.Signal ) {
152- ShredderFile (outFile , - 1 )
156+ cancel <- true
157+
158+ // await shredder
159+ <- c
153160 }, func (s string ) {
154161 printSuccess ("saved '%s'" , outFile )
155162 })
156163}
157164
158- func writeFile (cData * CommandData , resp * libdm.FileDownloadResponse , file string ) error {
165+ func writeFile (cData * CommandData , resp * libdm.FileDownloadResponse , file string , cancel chan bool ) error {
159166 // Save file to tempFile
160- err := resp .WriteToFile (file , 0600 )
167+ err := resp .WriteToFile (file , 0600 , cancel )
161168 if err != nil {
162169 if err == libdm .ErrChecksumNotMatch {
163170 cData .printChecksumError (resp )
164- } else {
171+ } else if err != libdm . ErrCancelled {
165172 printError ("downloading file" , err .Error ())
166173 }
167174 }
0 commit comments