summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Wilson <msw@redhat.com>1999-09-21 16:08:42 +0000
committerMatt Wilson <msw@redhat.com>1999-09-21 16:08:42 +0000
commit10395c942817f04a17481cabc9d25d1ba9678b6c (patch)
treea80d4a318dd48745baa638670c9e04088c4b8a42
parentc64619596343c12ae71aef5d1c44862f106c72b7 (diff)
downloadanaconda-10395c942817f04a17481cabc9d25d1ba9678b6c.tar.gz
anaconda-10395c942817f04a17481cabc9d25d1ba9678b6c.tar.xz
anaconda-10395c942817f04a17481cabc9d25d1ba9678b6c.zip
fork, exec for syslogd, shoot at rc parsing for language selection
-rwxr-xr-xanaconda12
-rwxr-xr-xgui.py24
-rw-r--r--iw/language.py5
-rw-r--r--syslogd.py5
-rw-r--r--todo.py18
5 files changed, 46 insertions, 18 deletions
diff --git a/anaconda b/anaconda
index c6e643d48..e9110d653 100755
--- a/anaconda
+++ b/anaconda
@@ -1,6 +1,17 @@
#!/usr/bin/python
import sys, os
+
+print sys.argv
+
+# Python passed my path as argv[0]!
+# if sys.argv[0][-7:] == "syslogd":
+if sys.argv[1] == "--syslogd":
+ from syslogd import Syslogd
+ root = sys.argv[2]
+ output = sys.argv[3]
+ syslog = Syslogd (root, open (output, "w+"))
+
import gettext
import traceback
import string
@@ -146,6 +157,7 @@ if traceOnly:
import urlinstall
import mimetools
import mimetypes
+ import syslogd
for module in sys.__dict__['modules'].keys ():
if module not in [ "__builtin__", "__main__" ]:
foo = repr (sys.__dict__['modules'][module])
diff --git a/gui.py b/gui.py
index 5c8179a07..5920c195a 100755
--- a/gui.py
+++ b/gui.py
@@ -1,17 +1,10 @@
import gettext
+import os
cat = gettext.Catalog ("anaconda", "/usr/share/locale")
def _(string):
- return cat.gettext(string)
-
-def setLanguage (lang):
- global cat
- newlangs = [lang]
- if len(lang) > 2:
- newlangs.append(lang[:2])
- gettext.setlangs (newlangs)
- cat = gettext.Catalog ("anaconda", "/usr/share/locale")
+ return cat.gettext(string)
from gtk import *
from gtk import _root_window
@@ -219,6 +212,19 @@ class InstallInterface:
self.finishedTODO.wait ()
class InstallControlWindow (Thread):
+ def setLanguage (self, lang):
+ global cat
+
+ newlangs = [lang]
+ if len(lang) > 2:
+ newlangs.append(lang[:2])
+ gettext.setlangs (newlangs)
+ cat = gettext.Catalog ("anaconda", "/usr/share/locale")
+ for l in newlangs:
+ if os.access ("/etc/gtk/gtkrc." + l, os.R_OK):
+ rc_parse("/etc/gtk/gtkrc." + l)
+ print "loaded gtkrc." + l
+ self.window.reset_rc_styles ()
def instantiateWindow (self, windowClass):
ics = InstallControlState (self, self.ii, self.todo)
diff --git a/iw/language.py b/iw/language.py
index ef3a3a67e..6877503f0 100644
--- a/iw/language.py
+++ b/iw/language.py
@@ -1,6 +1,6 @@
from gtk import *
from iw import *
-from gui import _, setLanguage
+from gui import _
class LanguageWindow (InstallWindow):
@@ -11,6 +11,7 @@ class LanguageWindow (InstallWindow):
ics.setPrevEnabled (0)
ics.setNextEnabled (1)
ics.readHTML ("lang")
+ self.icw = ics.getICW ()
self.question = (_("What language should be used during the "
"installation process?"))
self.languages = self.todo.language.available ()
@@ -20,7 +21,7 @@ class LanguageWindow (InstallWindow):
if self.running:
lang = clist.get_text (clist.selection[0], 0)
self.todo.language.set (lang)
- setLanguage (self.languages[lang])
+ self.icw.setLanguage (self.languages[lang])
def getScreen (self):
mainBox = GtkVBox (FALSE, 10)
diff --git a/syslogd.py b/syslogd.py
index 6fc6aa902..76704e6f9 100644
--- a/syslogd.py
+++ b/syslogd.py
@@ -5,7 +5,6 @@ from socket import *
from select import select
class Syslogd:
-
def goSyslog(self, output, sockName):
sock = socket(AF_UNIX, SOCK_STREAM)
@@ -46,6 +45,4 @@ class Syslogd:
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)
+ self.goSyslog(output, filename)
diff --git a/todo.py b/todo.py
index 75843dc5d..f15dcf3a2 100644
--- a/todo.py
+++ b/todo.py
@@ -1,7 +1,6 @@
import rpm, os
import iutil, isys
from lilo import LiloConfiguration
-from syslogd import Syslogd
import string
import socket
import crypt
@@ -312,6 +311,19 @@ class Drives:
def available (self):
return isys.hardDriveList ()
+class InstSyslog:
+ def __init__ (self, root, log):
+ self.pid = os.fork ()
+ if not self.pid:
+ if os.access ("./anaconda", os.X_OK):
+ path = "./anaconda"
+ else:
+ path = "/usr/bin/anaconda"
+ os.execv (path, ("syslogd", "--syslogd", root, log))
+
+ def __del__ (self):
+ os.kill (self.pid, 15)
+
class ToDo:
def __init__(self, intf, method, rootPath, setupFilesystems = 1,
installSystem = 1, mouse = None, instClass = None, x = None,
@@ -1290,7 +1302,7 @@ class ToDo:
logname = '/tmp/install.log'
self.instLog = open(self.instPath + logname, "w+")
- syslog = Syslogd(root = self.instPath, output = self.instLog)
+ syslog = InstSyslog (self.instPath, self.instPath + logname)
ts.scriptFd = self.instLog.fileno ()
# the transaction set dup()s the file descriptor and will close the
@@ -1398,7 +1410,7 @@ class ToDo:
#os.unlink(path)
- del syslog
+ del syslog
w.pop ()