summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErik Troan <ewt@redhat.com>1999-05-08 15:20:28 +0000
committerErik Troan <ewt@redhat.com>1999-05-08 15:20:28 +0000
commit6ebc9945b1f9421bc8891f37f35df84c6b268baf (patch)
treebfe6f048998f8a07c85397a35ca0677ca527b4bf
parente5b21144b27327c0e742a3bfc1778a092cf556b4 (diff)
downloadanaconda-6ebc9945b1f9421bc8891f37f35df84c6b268baf.tar.gz
anaconda-6ebc9945b1f9421bc8891f37f35df84c6b268baf.tar.xz
anaconda-6ebc9945b1f9421bc8891f37f35df84c6b268baf.zip
*** empty log message ***
-rw-r--r--syslogd.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/syslogd.py b/syslogd.py
new file mode 100644
index 000000000..91fcc77f7
--- /dev/null
+++ b/syslogd.py
@@ -0,0 +1,51 @@
+# Simple syslog
+
+import sys, os
+from socket import *
+from select import select
+
+class Syslog:
+
+ def goSyslog(self, output, sockName):
+ sock = socket(AF_UNIX, SOCK_STREAM)
+
+ try:
+ os.unlink(sockName)
+ except os.error:
+ pass
+
+ sock.bind(sockName)
+ acceptedFds = []
+ sock.listen(5)
+
+ while (1):
+ list = acceptedFds + [ sock ]
+ list = select(list, [], [])[0]
+ try:
+ list.remove(sock)
+ (fd, remoteAddr) = sock.accept()
+ acceptedFds.append(fd)
+ except ValueError:
+ pass
+
+ for fd in list:
+ msg = fd.recv(50)
+ if (msg):
+ output.write(msg)
+ else:
+ acceptedFds.remove(fd)
+ fd.close()
+
+ def __del__(self):
+ self.kill()
+
+ def kill(self):
+ os.kill(self.child, 15)
+ os.waitpid(self.child, 0)
+
+ def __init__(self, root = "", output = sys.stdout, socket = "/dev/log"):
+ output = output
+ filename = root + socket;
+ self.child = os.fork()
+ if (not self.child):
+ self.goSyslog(output, filename)