clean up on cancelled download

pull/14/head
chris west 4 years ago
parent 84b30b6dec
commit e4ce7a45be

@ -5,6 +5,7 @@
//! IPv6 addresses. //! IPv6 addresses.
use std::{ use std::{
fs,
io::{Read, Result, Write}, io::{Read, Result, Write},
net::TcpStream, net::TcpStream,
net::ToSocketAddrs, net::ToSocketAddrs,
@ -123,12 +124,12 @@ pub fn download_url(url: &str, tls: bool, tor: bool) -> Result<(String, usize)>
let mut keys = stdin.keys(); let mut keys = stdin.keys();
let mut stream = request(u.host, u.port, u.sel, tls, tor)?; let mut stream = request(u.host, u.port, u.sel, tls, tor)?;
let mut file = std::fs::OpenOptions::new() let mut file = fs::OpenOptions::new()
.write(true) .write(true)
.create(true) .create(true)
.truncate(true) .truncate(true)
.mode(0o770) .mode(0o770)
.open(path)?; .open(&path)?;
let mut buf = [0; 1024]; let mut buf = [0; 1024];
let mut bytes = 0; let mut bytes = 0;
@ -139,6 +140,9 @@ pub fn download_url(url: &str, tls: bool, tor: bool) -> Result<(String, usize)>
bytes += count; bytes += count;
file.write_all(&buf[..count])?; file.write_all(&buf[..count])?;
if let Some(Ok(termion::event::Key::Ctrl('c'))) = keys.next() { if let Some(Ok(termion::event::Key::Ctrl('c'))) = keys.next() {
if path.exists() {
fs::remove_file(path)?;
}
return Err(error!("Download cancelled")); return Err(error!("Download cancelled"));
} }
} }

Loading…
Cancel
Save