Compare commits

...

7 Commits
v0.8 ... main

Author SHA1 Message Date
Paul van Tilburg 6ee6a68694
Bump the version to 0.9 2023-12-12 15:08:04 +01:00
Paul van Tilburg 5b7130c2f9
Fix infinite loop when the viewer exits
* The viewer now sends `SIGHUP` to the main process when it exists
* The main process signal handler kills the viewer and terminates the
  notifier/main event loop when receiving `SIGINT`/`SIGTERM`/`SIGQUIT`
* The main process signal handler just terminates the notifier/main
  event loop when receiving `SIGHUP`
* Clean just after the notifier/main loop finishes
2023-12-12 15:08:04 +01:00
Paul van Tilburg fb1a0606fd
Fix code style and log message 2023-12-12 15:08:04 +01:00
Paul van Tilburg 174ec96c6d
Remove (commented) code that cleans after compile
This removes code commented out/refactored in commit 2cf1654.
2023-12-12 15:08:00 +01:00
Paul van Tilburg 2c996c7a18
Rename TODO to TODO.md because it is in Markdown format 2022-11-05 15:15:59 +01:00
Paul van Tilburg 0fe0a966f0
Rename COPYING to LICENSE for consistency 2022-11-05 15:15:23 +01:00
Paul van Tilburg 240ea58411
Fix confusing syntax 2022-11-05 15:08:15 +01:00
3 changed files with 22 additions and 17 deletions

View File

View File

View File

@ -70,10 +70,8 @@ def compile(infile, mode)
params = ARGV.join(" ")
err_file = infile.with_extname("err")
_ret = system "rubber --inplace #{mode_opt} #{params} #{infile} 2> #{err_file}"
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.
# clean(infile) if ret
end
# Start the right viewer based on the mode.
@ -109,7 +107,7 @@ end
## Initialisation
PROGRAM = File.basename($PROGRAM_NAME).freeze
VERSION = "0.8".freeze
VERSION = "0.9".freeze
# Parse the command line options.
# Determine the compile mode from the options.
@ -128,8 +126,10 @@ opts.each do |opt, _arg|
when "--ps"
mode = :ps
when "--pdf"
mode = if mode == :ps then :pspdf
else :pdf
mode = if mode == :ps
:pspdf
else
:pdf
end
when "--version"
puts "#{PROGRAM} #{VERSION}"
@ -172,18 +172,9 @@ viewer_pid =
view(infile, mode)
# If xdvi/evince exits, this program should exit too.
puts "#{PROGRAM}: viewer exited, so will I!"
Process.kill("TERM", pid)
Process.kill("HUP", pid)
end
# Handle signals.
["INT", "TERM", "QUIT"].each do |sig|
Signal.trap(sig) do
Process.kill(sig, viewer_pid)
clean(infile)
exit
end
end
## Main event loop
# Add input file with dependancies to the watch list and start event loop.
@ -196,11 +187,25 @@ dirs.each do |dir|
file_path = (dir + ev.name).to_s
next unless files.include? file_path
puts "I: file #{ev.name} modified, compiling #{infile}..."
puts "#{PROGRAM}: file #{ev.name} modified, compiling #{infile}..."
compile(infile, mode)
reload(infile, mode)
puts
end
end
# Handle signals during the main event loop.
["INT", "TERM", "QUIT"].each do |sig|
Signal.trap(sig) do
puts "#{PROGRAM}: caught signal #{sig}, stopping the viewer..."
Process.kill(sig, viewer_pid)
notifier.stop
end
end
Signal.trap("HUP") { notifier.stop }
# Run the main event loop.
notifier.run
# Clean before finishing!
clean(infile)