diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2012-03-15 15:49:22 +0000 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2012-03-16 21:52:52 +0000 |
commit | 96b80510da163b3999a86821ecb2fbc6de092e9d (patch) | |
tree | afbea4bdc048d73b7e538f6377385c04a9098291 /sparsify | |
parent | 2c73bdb66b25f6cb00fbdd83e95b78776897057d (diff) | |
download | libguestfs-96b80510da163b3999a86821ecb2fbc6de092e9d.tar.gz libguestfs-96b80510da163b3999a86821ecb2fbc6de092e9d.tar.xz libguestfs-96b80510da163b3999a86821ecb2fbc6de092e9d.zip |
sparsify: Unlink temporary overlay file if user presses ^C.
Add a signal handler so this potentially large temporary file
is removed when the user hits ^C.
(cherry picked from commit 7283a5a2765c0670e9dceec70e626a49a30d269c)
Diffstat (limited to 'sparsify')
-rw-r--r-- | sparsify/sparsify.ml | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sparsify/sparsify.ml b/sparsify/sparsify.ml index a891beaa..a76bd5f1 100644 --- a/sparsify/sparsify.ml +++ b/sparsify/sparsify.ml @@ -143,9 +143,13 @@ let () = (* Create the temporary overlay file. *) let overlaydisk = let tmp = Filename.temp_file "sparsify" ".qcow2" in + let unlink_tmp () = try unlink tmp with _ -> () in (* Unlink on exit. *) - at_exit (fun () -> try unlink tmp with _ -> ()); + at_exit unlink_tmp; + + (* Unlink on sigint. *) + Sys.set_signal Sys.sigint (Sys.Signal_handle (fun _ -> unlink_tmp ())); (* Create it with the indisk as the backing file. *) let cmd = |