summaryrefslogtreecommitdiffstats
path: root/syslogd.py
diff options
context:
space:
mode:
authorMatt Wilson <msw@redhat.com>2001-07-06 03:53:54 +0000
committerMatt Wilson <msw@redhat.com>2001-07-06 03:53:54 +0000
commit5ff21c7cb43dc8ce0a19d768c6fbadb3c7daedac (patch)
treed03ba5f602ba2e978bd86cb21db95cfff41e4e42 /syslogd.py
parentc43ea8581fba1789aade518540a9fa55e7590adf (diff)
downloadanaconda-5ff21c7cb43dc8ce0a19d768c6fbadb3c7daedac.tar.gz
anaconda-5ff21c7cb43dc8ce0a19d768c6fbadb3c7daedac.tar.xz
anaconda-5ff21c7cb43dc8ce0a19d768c6fbadb3c7daedac.zip
make syslog a global object and don't kill it, let init kill it later. #47556
Diffstat (limited to 'syslogd.py')
-rw-r--r--syslogd.py37
1 files changed, 36 insertions, 1 deletions
diff --git a/syslogd.py b/syslogd.py
index afe31eefd..5a0ce788f 100644
--- a/syslogd.py
+++ b/syslogd.py
@@ -1,5 +1,5 @@
#
-# syslogd.py - a simple syslogd implementation
+# syslogd.py - a simple syslogd implementation and wrapper for launching it
#
# Erik Troan <ewt@redhat.com>
#
@@ -14,6 +14,7 @@
#
import sys, os
+import string
from socket import *
from select import select
@@ -52,3 +53,37 @@ class Syslogd:
output = output
filename = root + socket;
self.goSyslog(output, filename)
+
+class InstSyslog:
+ def __init__ (self):
+ self.pid = -1;
+
+ def start (self, root, log):
+ self.pid = os.fork ()
+ if not self.pid:
+ # look on PYTHONPATH first, so we use updated anaconda
+ path = None
+ if os.environ.has_key('PYTHONPATH'):
+ for f in string.split(os.environ['PYTHONPATH'], ":"):
+ if os.access (f+"/anaconda", os.X_OK):
+ path = f+"/anaconda"
+ break
+
+ if not path:
+ if os.access ("./anaconda", os.X_OK):
+ path = "./anaconda"
+ elif os.access ("/usr/bin/anaconda.real", os.X_OK):
+ path = "/usr/bin/anaconda.real"
+ else:
+ path = "/usr/bin/anaconda"
+
+ os.execv (path, ("syslogd", "--syslogd", root, log))
+
+ def stop(self):
+ if self.pid == -1:
+ raise RuntimeError, "syslogd not running"
+ os.kill (self.pid, 15)
+ os.wait (self.pid)
+ self.pid = -1
+
+syslog = InstSyslog()