diff --git a/Makefile b/Makefile index e468ed6..cd6c274 100644 --- a/Makefile +++ b/Makefile @@ -119,7 +119,7 @@ clean-lib: build-lib: install-lib: - for libfile in $(NAME)/*.rb ; do \ + for libfile in lib/*.rb lib/**/*.rb ; do \ install -D -o root -g root -m 644 $$libfile $(SHAREDIR)/$(NAME)/$$libfile; \ done diff --git a/bin/qasim-gui.rb b/bin/qasim-gui.rb index ef4bd12..4ae3055 100755 --- a/bin/qasim-gui.rb +++ b/bin/qasim-gui.rb @@ -26,7 +26,12 @@ end module Qasim - class QasimGui + class QasimApp + def initialize + end + end + + class QasimGui < QasimApp def initialize @@ -207,32 +212,27 @@ module Qasim end - # - # - # - def run - # create lock - have_lock = true - - FileUtils.mkdir_p APP_CONFIG_DIR unless File.exist? APP_CONFIG_DIR - lockfname = File.join APP_CONFIG_DIR, "lock" - fd = IO::sysopen( lockfname, - Fcntl::O_WRONLY | Fcntl::O_EXCL | Fcntl::O_CREAT) - f = IO.open(fd) - f.syswrite( "#{Process.pid}\n" ) - f.close - @app.exec - rescue Errno::EEXIST => e - # test if the other process still exist - masterpid = File.read(lockfname).strip + def lock_set begin + # create lock + have_lock = true + + FileUtils.mkdir_p APP_CONFIG_DIR unless File.exist? APP_CONFIG_DIR + lockfname = File.join APP_CONFIG_DIR, "lock" + fd = IO::sysopen( lockfname, + Fcntl::O_WRONLY | Fcntl::O_EXCL | Fcntl::O_CREAT) + f = IO.open(fd) + f.syswrite( "#{Process.pid}\n" ) + f.close + rescue Errno::EEXIST => e + # test if the other process still exist + masterpid = File.read(lockfname).strip # FIXME: test if the other process exists other_path = "/proc/#{masterpid.to_i}" if File.exists? other_path then cmdline = File.read( File.join( other_path, 'cmdline' ) ) if cmdline =~ /qasim/ then - warn "error: Another instance of %s is already running." % APP_NAME - exit 1 + raise LockError, "Another instance of %s is already running." % APP_NAME end end fd = IO::sysopen( lockfname, @@ -240,15 +240,26 @@ module Qasim f = IO.open(fd) f.syswrite( "#{Process.pid}\n" ) f.close - @app.exec end - ensure + end + + def lock_unset masterpid = File.read(lockfname).strip if masterpid.to_i == Process.pid then FileUtils.rm lockfname end end + # + # + # + def run + lock_set + @app.exec + ensure + lock_unset + end + # # diff --git a/lib/qasim/Makefile b/lib/qasim/Makefile deleted file mode 100644 index c2e8812..0000000 --- a/lib/qasim/Makefile +++ /dev/null @@ -1,4 +0,0 @@ - -clean: - - diff --git a/lib/qasim/config.rb b/lib/qasim/config.rb index 4b74ef9..0162c06 100644 --- a/lib/qasim/config.rb +++ b/lib/qasim/config.rb @@ -35,7 +35,10 @@ module Qasim #rdebug "Config: #{@config_dir}/config" @maps = [] - Find.find( @config_dir, APP_SYSCONFIG_DIR ) do |path| + map_dirs = [@config_dir, APP_SYSCONFIG_DIR].select{ |d| + File.exists? d and File.directory? d + } + Find.find( *map_dirs ) do |path| if File.file? path if File.basename( path ) =~ /.map$/ begin