freebsd-ports/dns/dns_balance/files/patch-dns_balance.rb
Rong-En Fan 62801042a0 - Update to 2.0
- Fix rc script, use command_interpreter to make it stop properly
- Pass maintainership to submitter

PR:		ports/101672
Submitted by:	Stanislav Sedov <ssedov at mbsd.msk.ru>
2006-08-12 03:56:54 +00:00

97 lines
2 KiB
Ruby

--- dns_balance.rb.orig Sat Jun 11 02:23:56 2005
+++ dns_balance.rb Tue Aug 8 23:51:31 2006
@@ -7,14 +7,7 @@
# $Id: dns_balance.rb,v 1.25 2003/06/13 22:07:27 elca Exp $
# DNS Balance ¤Î¸ºß¤¹¤ë¥Ñ¥¹Ì¾
-if ENV["ROOT"] == nil
- warn("\"ROOT\" environment is recommended. Use current directory in this time.")
- PREFIX = "."
-# exit(111)
-else
- PREFIX = ENV["ROOT"]
- $LOAD_PATH.unshift(PREFIX)
-end
+$LOAD_PATH.unshift("%%PREFIX%%/etc/%%PORTNAME%%", "%%PREFIX%%/lib/%%PORTNAME%%")
$LOAD_PATH.freeze
require 'socket'
@@ -204,6 +197,14 @@
opt.on("--as", "Enable AS namespace") {
OPT["as"] = true
}
+ opt.on("-l LOGFILE", String, "Print log to LOGFILE") {
+ |o|
+ OPT["l"] = o;
+ }
+ opt.on("-p PIDFILE", String, "Record PID to PIDFILE") {
+ |o|
+ OPT["p"] = o;
+ }
opt.on_tail("-h", "--help", "Show this help message and exit") {
STDERR.printf("%s", opt.to_s)
exit(111)
@@ -212,10 +213,42 @@
}
OPT.freeze
-ML = MultiLog::new
-ML.open
+exit! if fork
+Process::setsid
+exit! if fork
+STDIN.close
+STDOUT.close
+STDERR.close
+
+$pidfile = nil
+if OPT["p"]
+ $pidfile = OPT["p"]
+ File::open($pidfile, 'w') { |f| f.puts $$ }
+end
+
+$logout = nil
+if OPT["l"]
+ $logout = File::open(OPT["l"], 'a+')
+ $logout.sync = true
+end
+
+[0, 2, 3, 5, 10, 13, 15].each do |sig|
+ trap(sig) {
+ File::unlink($pidfile) if $pidfile
+ $logout.close if $logout
+ exit
+ }
+end
+
+ ML = MultiLog.new
+if OPT["l"]
+ $logout = File::open(OPT["l"], 'a+')
+ $logout.sync = true
+ ML.open($logout)
+else
+ ML.open
+end
-ML.log("dir: " + PREFIX)
ML.log("start")
@@ -224,7 +257,7 @@
#
Thread::start {
loop {
- if test(?r, PREFIX + "/addr") || test(?r, "./addr")
+ if test(?r, "%%ETCDIR%%" + "/addr")
begin
load("addr")
@@ -234,7 +267,7 @@
end
end
- #if test(?r, PREFIX + "/addr-once") || test(?r, "./addr-once")
+ #if test(?r, "%%ETCDIR%%" + "/addr-once")
# Thread.exit
#end