From 2d4227a362b763609c04c525e4a2612100626a5c Mon Sep 17 00:00:00 2001 From: Paul van Tilburg Date: Thu, 16 Jul 2009 12:02:40 +0200 Subject: [PATCH] Clean up cruft on quit. --- rubberin | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/rubberin b/rubberin index 52dca8a..a9eee54 100755 --- a/rubberin +++ b/rubberin @@ -71,7 +71,7 @@ def compile(infile, mode) ret = system "rubber --inplace #{mode_opt} #{params} #{infile} 2> #{err_file}" File.open(err_file) { |file| puts file.read } # Remove the output save file if compile was succesful. - File.unlink(err_file) if ret + clean(infile) if ret end # Start the right viewer based on the mode. @@ -87,6 +87,13 @@ def view(infile, mode) end end +# Clean up cruft related to compilation of the input file. +def clean(infile) + err_file = infile.with_extname('err') + File.unlink(err_file) if err_file.exist? + system "rubber --clean --inplace #{infile}" +end + # Reload the right viewer based on the mode. def reload(infile, mode) case mode @@ -159,10 +166,18 @@ view(infile, mode) if not viewer_pid # Handle signals. ["INT", "TERM", "QUIT"].each do |sig| - Signal.trap(sig) { Process.kill(sig, viewer_pid); exit } + Signal.trap(sig) do + Process.kill(sig, viewer_pid) + clean(infile) + exit + end end # If xdvi exits, this program should exit too. -Signal.trap("CLD") { puts "#{Program}: viewer exited, so will I!"; exit } +Signal.trap("CLD") do + puts "#{Program}: viewer exited, so will I!" + clean(infile) + exit +end ## Main event loop