rpms/policycoreutils/F-8 policycoreutils-gui.patch, 1.45, 1.46 policycoreutils.spec, 1.470, 1.471
Daniel J Walsh (dwalsh)
fedora-extras-commits at redhat.com
Mon Nov 5 21:31:49 UTC 2007
Author: dwalsh
Update of /cvs/extras/rpms/policycoreutils/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv19649
Modified Files:
policycoreutils-gui.patch policycoreutils.spec
Log Message:
policycoreutils-gui.patch:
Index: policycoreutils-gui.patch
===================================================================
RCS file: /cvs/extras/rpms/policycoreutils/F-8/policycoreutils-gui.patch,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- policycoreutils-gui.patch 25 Oct 2007 20:54:45 -0000 1.45
+++ policycoreutils-gui.patch 5 Nov 2007 21:31:42 -0000 1.46
@@ -1,7 +1,7 @@
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/booleansPage.py policycoreutils-2.0.31/gui/booleansPage.py
--- nsapolicycoreutils/gui/booleansPage.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/booleansPage.py 2007-10-15 16:55:03.000000000 -0400
-@@ -0,0 +1,254 @@
++++ policycoreutils-2.0.31/gui/booleansPage.py 2007-11-05 15:47:36.000000000 -0500
+@@ -0,0 +1,230 @@
+#
+# booleansPage.py - GUI for Booleans page in system-config-securitylevel
+#
@@ -30,6 +30,7 @@
+import sys
+import tempfile
+import seobject
++import semanagePage
+
+INSTALLPATH='/usr/share/system-config-selinux'
+sys.path.append(INSTALLPATH)
@@ -58,44 +59,6 @@
+
+from glob import fnmatch
+
-+class Translation:
-+ def __init__(self):
-+ self.translation={}
-+ fd=open(INSTALLPATH + "/selinux.tbl","r")
-+ lines=fd.readlines()
-+ fd.close()
-+ for i in lines:
-+ try:
-+ line=i.strip().split("_(\"")
-+ key=line[0].strip()
-+ category=line[1].split("\"")[0]
-+ value=line[2].split("\"")[0]
-+ self.translation[key]=(category,value)
-+ except:
-+ continue
-+
-+ def match(self,key, filter=""):
-+ try:
-+ f=filter.lower()
-+ val=self.get_value(key).lower()
-+ k=key.lower()
-+ return val.find(f) >= 0 or k.find(f) >= 0
-+ except:
-+ return False
-+
-+ def get_category(self,key):
-+ try:
-+ return _(self.translation[key][0])
-+ except:
-+ #print key, "missing translation"
-+ return _("Other")
-+
-+ def get_value(self,key):
-+ try:
-+ return _(self.translation[key][1])
-+ except:
-+ return key
-+
+class Modifier:
+ def __init__(self,name, on, save):
+ self.on=on
@@ -113,56 +76,22 @@
+ def __init__(self,name, val, save=False):
+ Modifier.__init__(self,name, val, save)
+
-+class Modifiers:
-+ def __init__(self,store):
-+ self.modifiers={}
-+ self.translation=Translation()
-+ self.store=store
-+ self.store.clear()
-+
-+ def add(self,name,val):
-+ if name == "targeted_policy":
-+ return
-+ category=self.translation.get_category(name)
-+ if not self.modifiers.has_key(category):
-+ self.modifiers[category]={}
-+ iter=self.store.append(None)
-+ self.modifiers[category]["iter"] = iter
-+ self.store.set_value(iter, 1, category)
-+ self.store.set_value(iter, 3, False)
-+
-+ self.modifiers[category][name]=val;
-+ iter=self.store.append(self.modifiers[category]["iter"])
-+ self.store.set_value(iter, 0, val.isOn())
-+ self.store.set_value(iter, 1, self.translation.get_value(name))
-+ self.store.set_value(iter, 2, name)
-+ self.store.set_value(iter, 3, True)
-+
-+ def set(self,name,val):
-+ category=self.translation.get_category(name)
-+ self.modifiers[category][name].set(val)
-+
-+ def isBoolean(self,name):
-+ c=self.translation.get_category(name)
-+ return isinstance(self.modifiers[c][name], Boolean)
-+
-+ def get_booleans(self):
-+ booleans={}
-+ for c in self.modifiers.keys():
-+ for n in self.modifiers[c].keys():
-+ if isinstance(self.modifiers[c][n], Boolean):
-+ booleans[n]=self.modifiers[c][n]
-+ return booleans
++ACTIVE = 0
++MODULE = 1
++DESC = 2
++BOOLEAN = 3
+
+class booleansPage:
+ def __init__(self, xml, doDebug=None):
+ self.xml = xml
++ self.window = self.xml.get_widget("mainWindow").get_root_window()
+ self.local = False
+ self.types=[]
+ self.selinuxsupport = True
-+ self.translation = Translation()
+ self.typechanged = False
+ self.doDebug = doDebug
++ self.busy_cursor = gtk.gdk.Cursor(gtk.gdk.WATCH)
++ self.ready_cursor = gtk.gdk.Cursor(gtk.gdk.LEFT_PTR)
+
+ # Bring in widgets from glade file.
+ self.typeHBox = xml.get_widget("typeHBox")
@@ -180,30 +109,65 @@
+ listStore = gtk.ListStore(gobject.TYPE_STRING)
+ cell = gtk.CellRendererText()
+
-+ self.booleansStore = gtk.TreeStore(gobject.TYPE_BOOLEAN, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT, gobject.TYPE_BOOLEAN)
-+ self.booleansStore.set_sort_column_id(1, gtk.SORT_ASCENDING)
-+ self.booleansView.set_model(self.booleansStore)
++ self.store = gtk.ListStore(gobject.TYPE_BOOLEAN, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
++ self.store.set_sort_column_id(1, gtk.SORT_ASCENDING)
++ self.booleansView.set_model(self.store)
+
+ checkbox = gtk.CellRendererToggle()
+ checkbox.connect("toggled", self.boolean_toggled)
-+ col = gtk.TreeViewColumn('', checkbox, active = 0,visible=3)
-+ col.set_fixed_width(20)
++ col = gtk.TreeViewColumn('Active', checkbox, active = ACTIVE)
+ col.set_clickable(True)
++ col.set_sort_column_id(ACTIVE)
++ self.booleansView.append_column(col)
++
++ col = gtk.TreeViewColumn("Module", gtk.CellRendererText(), text=MODULE)
++ col.set_sort_column_id(MODULE)
++ col.set_resizable(True)
++ self.booleansView.append_column(col)
++
++ col = gtk.TreeViewColumn("Description", gtk.CellRendererText(), text=DESC)
++ col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
++ col.set_fixed_width(400)
++ col.set_sort_column_id(DESC)
++ col.set_resizable(True)
+ self.booleansView.append_column(col)
+
-+ col = gtk.TreeViewColumn("", gtk.CellRendererText(), text=1)
++ col = gtk.TreeViewColumn("Name", gtk.CellRendererText(), text=BOOLEAN)
++ col.set_sort_column_id(BOOLEAN)
++ col.set_resizable(True)
++ self.booleansView.set_search_equal_func(self.__search)
+ self.booleansView.append_column(col)
+ self.filter=""
+ self.load(self.filter)
+
++ def __search(self, model, col, key, i):
++ sort_col = self.store.get_sort_column_id()[0]
++ if sort_col > 0:
++ val = model.get_value(i, sort_col)
++ if val.lower().startswith(key.lower()):
++ return False
++ return True
++
++ def wait(self):
++ self.window.set_cursor(self.busy_cursor)
++ semanagePage.idle_func()
++
++ def ready(self):
++ self.window.set_cursor(self.ready_cursor)
++ semanagePage.idle_func()
++
+ def deleteDialog(self):
+ store, iter = self.booleansView.get_selection().get_selected()
-+ boolean = store.get_value(iter, 2)
++ boolean = store.get_value(iter, BOOLEAN)
++ # change cursor
+ if boolean == None:
+ return
+ try:
++ self.wait()
++ self.booleansView.get_root_window().set_cursor(cursor)
+ (rc, out) = commands.getstatusoutput("semanage boolean -d %s" % boolean)
+
++ self.ready()
+ if rc != 0:
+ return self.error(out)
+ self.load(self.filter)
@@ -222,27 +186,39 @@
+ def get_description(self):
+ return _("Boolean")
+
++ def match(self,key, filter=""):
++ try:
++ f=filter.lower()
++ cat=self.booleans.get_category(key).lower()
++ val=self.booleans.get_desc(key).lower()
++ k=key.lower()
++ return val.find(f) >= 0 or k.find(f) >= 0 or cat.find(f) >= 0
++ except:
++ return False
++
++
+ def load(self, filter=None):
-+ self.modifiers=Modifiers(self.booleansStore)
-+ booleans=seobject.booleanRecords()
-+ booleansList=booleans.get_all(self.local)
-+# booleansList=commands.getoutput("/usr/sbin/getsebool -a").split("\n")
++ self.store.clear()
++ self.booleans = seobject.booleanRecords()
++ booleansList = self.booleans.get_all(self.local)
+ for name in booleansList:
-+ rec=booleansList[name]
-+ if self.translation.match(name, filter):
-+ self.modifiers.add(name,Boolean(name,rec[2] == 1))
++ rec = booleansList[name]
++ if self.match(name, filter):
++ iter=self.store.append()
++ self.store.set_value(iter, ACTIVE, rec[2] == 1)
++ self.store.set_value(iter, MODULE, self.booleans.get_category(name))
++ self.store.set_value(iter, DESC, self.booleans.get_desc(name))
++ self.store.set_value(iter, BOOLEAN, name)
+
+ def boolean_toggled(self, widget, row):
-+ if len(row) == 1:
-+ return
-+ iter = self.booleansStore.get_iter(row)
-+ val = self.booleansStore.get_value(iter, 0)
-+ key = self.booleansStore.get_value(iter, 2)
-+ self.booleansStore.set_value(iter, 0 , not val)
-+ self.modifiers.set(key, not val)
-+
++ iter = self.store.get_iter(row)
++ val = self.store.get_value(iter, ACTIVE)
++ key = self.store.get_value(iter, BOOLEAN)
++ self.store.set_value(iter, ACTIVE , not val)
++ self.wait()
+ setsebool="/usr/sbin/setsebool -P %s=%d" % (key, not val)
+ commands.getstatusoutput(setsebool)
++ self.ready()
+
+ def on_local_clicked(self, button):
+ self.local = not self.local
@@ -258,8 +234,8 @@
+
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/fcontextPage.py policycoreutils-2.0.31/gui/fcontextPage.py
--- nsapolicycoreutils/gui/fcontextPage.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/fcontextPage.py 2007-10-15 16:55:03.000000000 -0400
-@@ -0,0 +1,209 @@
++++ policycoreutils-2.0.31/gui/fcontextPage.py 2007-11-05 16:29:06.000000000 -0500
+@@ -0,0 +1,217 @@
+## fcontextPage.py - show selinux mappings
+## Copyright (C) 2006 Red Hat, Inc.
+
@@ -294,11 +270,9 @@
+ def __init__(self, scontext):
+ self.scontext = scontext
+ con=scontext.split(":")
-+ self.user = con[0]
-+ self.role = con[1]
-+ self.type = con[2]
-+ if len(con) > 3:
-+ self.mls = con[3]
++ self.type = con[0]
++ if len(con) > 1:
++ self.mls = con[1]
+ else:
+ self.mls = "s0"
+
@@ -322,16 +296,18 @@
+ import __builtin__
+ __builtin__.__dict__['_'] = unicode
+
++
+class fcontextPage(semanagePage):
+ def __init__(self, xml):
+ semanagePage.__init__(self, xml, "fcontext", _("File Labeling"))
+ self.fcontextFilter = xml.get_widget("fcontextFilterEntry")
+ self.fcontextFilter.connect("focus_out_event", self.filter_changed)
+ self.fcontextFilter.connect("activate", self.filter_changed)
-+ self.view = xml.get_widget("fcontextView")
++
+ self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
++ self.view = xml.get_widget("fcontextView")
+ self.view.set_model(self.store)
-+# self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)
++ self.view.set_search_equal_func(self.search)
+
+ col = gtk.TreeViewColumn(_("File\nSpecification"), gtk.CellRendererText(), text=SPEC_COL)
+ col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
@@ -340,7 +316,7 @@
+ col.set_sort_column_id(SPEC_COL)
+ col.set_resizable(True)
+ self.view.append_column(col)
-+ col = gtk.TreeViewColumn(_("Selinux\nFile Context"), gtk.CellRendererText(), text=TYPE_COL)
++ col = gtk.TreeViewColumn(_("Selinux\nFile Type"), gtk.CellRendererText(), text=TYPE_COL)
+
+ col.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
+ col.set_fixed_width(250)
@@ -351,6 +327,8 @@
+ col.set_sort_column_id(FTYPE_COL)
+ col.set_resizable(True)
+ self.view.append_column(col)
++
++ self.store.set_sort_column_id(SPEC_COL, gtk.SORT_ASCENDING)
+ self.load()
+ self.fcontextEntry = xml.get_widget("fcontextEntry")
+ self.fcontextFileTypeCombo = xml.get_widget("fcontextFileTypeCombo")
@@ -387,10 +365,10 @@
+ self.store.set_value(iter, SPEC_COL, fcon[0])
+ self.store.set_value(iter, FTYPE_COL, fcon[1])
+ if len(fcon) > 3:
-+ rec="%s:%s:%s:%s " % (fcon[2], fcon[3],fcon[4], seobject.translate(fcon[5],False))
++ rec="%s:%s" % (fcon[4], seobject.translate(fcon[5],False))
+ else:
+ rec="<<None>>"
-+ self.store.set_value(iter, 1, rec)
++ self.store.set_value(iter, TYPE_COL, rec)
+ self.view.get_selection().select_path ((0,))
+
+ def filter_changed(self, *arg):
@@ -427,7 +405,9 @@
+ try:
+ fspec=store.get_value(iter, SPEC_COL)
+ ftype=store.get_value(iter, FTYPE_COL)
++ self.wait()
+ (rc, out) = commands.getstatusoutput("semanage fcontext -d -f '%s' %s" % (ftype, fspec))
++ self.ready()
+
+ if rc != 0:
+ return self.error(out)
@@ -443,7 +423,9 @@
+ list_model=self.fcontextFileTypeCombo.get_model()
+ iter = self.fcontextFileTypeCombo.get_active_iter()
+ ftype=list_model.get_value(iter,0)
++ self.wait()
+ (rc, out) = commands.getstatusoutput("semanage fcontext -a -t %s -r %s -f '%s' %s" % (type, mls, ftype, fspec))
++ self.ready()
+ if rc != 0:
+ self.error(out)
+ return False
@@ -451,7 +433,7 @@
+ iter=self.store.append()
+ self.store.set_value(iter, SPEC_COL, fspec)
+ self.store.set_value(iter, FTYPE_COL, ftype)
-+ self.store.set_value(iter, TYPE_COL, "system_u:object_r:%s:%s" % (type, mls))
++ self.store.set_value(iter, TYPE_COL, "%s:%s" % (type, mls))
+
+ def modify(self):
+ fspec=self.fcontextEntry.get_text().strip()
@@ -460,7 +442,9 @@
+ list_model=self.fcontextFileTypeCombo.get_model()
+ iter = self.fcontextFileTypeCombo.get_active_iter()
+ ftype=list_model.get_value(iter,0)
++ self.wait()
+ (rc, out) = commands.getstatusoutput("semanage fcontext -m -t %s -r %s -f '%s' %s" % (type, mls, ftype, fspec))
++ self.ready()
+ if rc != 0:
+ self.error(out)
+ return False
@@ -468,11 +452,11 @@
+ store, iter = self.view.get_selection().get_selected()
+ self.store.set_value(iter, SPEC_COL, fspec)
+ self.store.set_value(iter, FTYPE_COL, ftype)
-+ self.store.set_value(iter, TYPE_COL, "system_u:object_r:%s:%s" % (type, mls))
++ self.store.set_value(iter, TYPE_COL, "%s:%s" % (type, mls))
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/loginsPage.py policycoreutils-2.0.31/gui/loginsPage.py
--- nsapolicycoreutils/gui/loginsPage.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/loginsPage.py 2007-10-15 16:55:03.000000000 -0400
-@@ -0,0 +1,179 @@
++++ policycoreutils-2.0.31/gui/loginsPage.py 2007-11-05 15:48:06.000000000 -0500
+@@ -0,0 +1,185 @@
+## loginsPage.py - show selinux mappings
+## Copyright (C) 2006 Red Hat, Inc.
+
@@ -607,7 +591,9 @@
+ if login == "root" or login == "__default__":
+ raise ValueError(_("Login '%s' is required") % login)
+
++ self.wait()
+ (rc, out) = commands.getstatusoutput("semanage login -d %s" % login)
++ self.ready()
+ if rc != 0:
+ self.error(out)
+ return False
@@ -624,7 +610,9 @@
+ list_model=self.loginsSelinuxUserCombo.get_model()
+ iter = self.loginsSelinuxUserCombo.get_active_iter()
+ seuser = list_model.get_value(iter,0)
++ self.wait()
+ (rc, out) = commands.getstatusoutput("semanage login -a -s %s -r %s %s" % (seuser, serange, target))
++ self.ready()
+ if rc != 0:
+ self.error(out)
+ return False
@@ -642,7 +630,9 @@
+ list_model = self.loginsSelinuxUserCombo.get_model()
+ iter = self.loginsSelinuxUserCombo.get_active_iter()
+ seuser=list_model.get_value(iter,0)
++ self.wait()
+ (rc, out) = commands.getstatusoutput("semanage login -m -s %s -r %s %s" % (seuser, serange, target))
++ self.ready()
+ if rc != 0:
+ self.error(out)
+ return False
@@ -654,7 +644,7 @@
+
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/Makefile policycoreutils-2.0.31/gui/Makefile
--- nsapolicycoreutils/gui/Makefile 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/Makefile 2007-10-15 16:55:03.000000000 -0400
++++ policycoreutils-2.0.31/gui/Makefile 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,34 @@
+# Installation directories.
+PREFIX ?= ${DESTDIR}/usr
@@ -692,7 +682,7 @@
+relabel:
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/mappingsPage.py policycoreutils-2.0.31/gui/mappingsPage.py
--- nsapolicycoreutils/gui/mappingsPage.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/mappingsPage.py 2007-10-15 16:55:03.000000000 -0400
++++ policycoreutils-2.0.31/gui/mappingsPage.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,56 @@
+## mappingsPage.py - show selinux mappings
+## Copyright (C) 2006 Red Hat, Inc.
@@ -752,8 +742,8 @@
+
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/modulesPage.py policycoreutils-2.0.31/gui/modulesPage.py
--- nsapolicycoreutils/gui/modulesPage.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/modulesPage.py 2007-10-16 23:32:51.000000000 -0400
-@@ -0,0 +1,187 @@
++++ policycoreutils-2.0.31/gui/modulesPage.py 2007-11-05 15:48:46.000000000 -0500
+@@ -0,0 +1,195 @@
+## modulesPage.py - show selinux mappings
+## Copyright (C) 2006 Red Hat, Inc.
+
@@ -869,7 +859,9 @@
+ store, iter = self.view.get_selection().get_selected()
+ module = store.get_value(iter, 0)
+ try:
++ self.wait()
+ status, output = commands.getstatusoutput("semodule -r %s" % module)
++ self.ready()
+ if status != 0:
+ self.error(output)
+ else:
@@ -882,12 +874,14 @@
+ def enable_audit(self, button):
+ self.audit_enabled = not self.audit_enabled
+ try:
++ self.wait()
+ if self.audit_enabled:
+ status, output =commands.getstatusoutput("semodule -DB")
+ button.set_label(_("Disable Audit"))
+ else:
+ status, output =commands.getstatusoutput("semodule -B")
+ button.set_label(_("Enable Audit"))
++ self.ready()
+
+ if status != 0:
+ self.error(output)
@@ -897,7 +891,9 @@
+
+ def disable_audit(self, button):
+ try:
++ self.wait()
+ status, output =commands.getstatusoutput("semodule -B")
++ self.ready()
+ if status != 0:
+ self.error(output)
+
@@ -928,7 +924,9 @@
+
+ def add(self, file):
+ try:
++ self.wait()
+ status, output =commands.getstatusoutput("semodule -i %s" % file)
++ self.ready()
+ if status != 0:
+ self.error(output)
+ else:
@@ -943,7 +941,7 @@
+
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/polgen.glade policycoreutils-2.0.31/gui/polgen.glade
--- nsapolicycoreutils/gui/polgen.glade 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/polgen.glade 2007-10-16 21:32:19.000000000 -0400
++++ policycoreutils-2.0.31/gui/polgen.glade 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,3012 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
@@ -3959,7 +3957,7 @@
+</glade-interface>
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/polgengui.py policycoreutils-2.0.31/gui/polgengui.py
--- nsapolicycoreutils/gui/polgengui.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/polgengui.py 2007-10-16 21:32:31.000000000 -0400
++++ policycoreutils-2.0.31/gui/polgengui.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,590 @@
+#!/usr/bin/python -E
+#
@@ -4553,7 +4551,7 @@
+ app.stand_alone()
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/polgen.py policycoreutils-2.0.31/gui/polgen.py
--- nsapolicycoreutils/gui/polgen.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/polgen.py 2007-10-18 17:47:11.000000000 -0400
++++ policycoreutils-2.0.31/gui/polgen.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,831 @@
+# Copyright (C) 2007 Red Hat
+# see file 'COPYING' for use and warranty information
@@ -5388,8 +5386,8 @@
+
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/portsPage.py policycoreutils-2.0.31/gui/portsPage.py
--- nsapolicycoreutils/gui/portsPage.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/portsPage.py 2007-10-15 16:55:03.000000000 -0400
-@@ -0,0 +1,251 @@
++++ policycoreutils-2.0.31/gui/portsPage.py 2007-11-05 15:47:42.000000000 -0500
+@@ -0,0 +1,258 @@
+## portsPage.py - show selinux mappings
+## Copyright (C) 2006 Red Hat, Inc.
+
@@ -5473,6 +5471,7 @@
+ self.view.set_model(self.store)
+ self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)
+
++ self.view.set_search_equal_func(self.search)
+ col = gtk.TreeViewColumn(_("SELinux Port\nType"), gtk.CellRendererText(), text = TYPE_COL)
+ col.set_sort_column_id(TYPE_COL)
+ col.set_resizable(True)
@@ -5497,8 +5496,8 @@
+
+ def sort_int(self, treemodel, iter1, iter2, user_data):
+ try:
-+ p1 = int(treemodel.get_value(iter1,2))
-+ p2 = int(treemodel.get_value(iter2,2))
++ p1 = int(treemodel.get_value(iter1,PORT_COL))
++ p2 = int(treemodel.get_value(iter2,PORT_COL))
+ if p1 > p2:
+ return 1
+ if p1 == p2:
@@ -5577,7 +5576,9 @@
+ port = store.get_value(iter, PORT_COL)
+ protocol = store.get_value(iter, 1)
+ try:
++ self.wait()
+ (rc, out) = commands.getstatusoutput("semanage port -d -p %s %s" % (protocol, port))
++ self.ready()
+ if rc != 0:
+ return self.error(out)
+ store.remove(iter)
@@ -5597,7 +5598,9 @@
+ list_model = self.ports_protocol_combo.get_model()
+ iter = self.ports_protocol_combo.get_active_iter()
+ protocol = list_model.get_value(iter,0)
++ self.wait()
+ (rc, out) = commands.getstatusoutput("semanage port -a -p %s -r %s -t %s %s" % (protocol, mls, target, port_number))
++ self.ready()
+ if rc != 0:
+ self.error(out)
+ return False
@@ -5615,7 +5618,9 @@
+ list_model = self.ports_protocol_combo.get_model()
+ iter = self.ports_protocol_combo.get_active_iter()
+ protocol = list_model.get_value(iter,0)
++ self.wait()
+ (rc, out) = commands.getstatusoutput("semanage port -m -p %s -r %s -t %s %s" % (protocol, mls, target, port_number))
++ self.ready()
+ if rc != 0:
+ self.error(out)
+ return False
@@ -5643,7 +5648,7 @@
+
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/selinux.tbl policycoreutils-2.0.31/gui/selinux.tbl
--- nsapolicycoreutils/gui/selinux.tbl 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/selinux.tbl 2007-10-15 16:55:03.000000000 -0400
++++ policycoreutils-2.0.31/gui/selinux.tbl 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,295 @@
+! allow_console_login _("Login") _("Allow direct login to the console device. Required for System 390")
+acct_disable_trans _("SELinux Service Protection") _("Disable SELinux protection for acct daemon")
@@ -5942,8 +5947,8 @@
+
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/semanagePage.py policycoreutils-2.0.31/gui/semanagePage.py
--- nsapolicycoreutils/gui/semanagePage.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/semanagePage.py 2007-10-15 16:55:03.000000000 -0400
-@@ -0,0 +1,147 @@
++++ policycoreutils-2.0.31/gui/semanagePage.py 2007-11-05 15:48:10.000000000 -0500
+@@ -0,0 +1,170 @@
+## semanagePage.py - show selinux mappings
+## Copyright (C) 2006 Red Hat, Inc.
+
@@ -5986,9 +5991,17 @@
+ import __builtin__
+ __builtin__.__dict__['_'] = unicode
+
++def idle_func():
++ while gtk.events_pending():
++ gtk.main_iteration()
++
+class semanagePage:
+ def __init__(self, xml, name, description):
+ self.xml = xml
++ self.window = self.xml.get_widget("mainWindow").get_root_window()
++ self.busy_cursor = gtk.gdk.Cursor(gtk.gdk.WATCH)
++ self.ready_cursor = gtk.gdk.Cursor(gtk.gdk.LEFT_PTR)
++
+ self.local = False
+ self.view = xml.get_widget("%sView" % name)
+ self.dialog = xml.get_widget("%sDialog" % name)
@@ -6000,6 +6013,14 @@
+ self.view.get_selection().connect("changed", self.itemSelected)
+ self.description = description;
+
++ def wait(self):
++ self.window.set_cursor(self.busy_cursor)
++ idle_func()
++
++ def ready(self):
++ self.window.set_cursor(self.ready_cursor)
++ idle_func()
++
+ def get_description(self):
+ return self.description
+
@@ -6011,6 +6032,13 @@
+ if filter != self.filter:
+ self.load(filter)
+
++ def search(self, model, col, key, i):
++ sort_col = self.store.get_sort_column_id()[0]
++ val = model.get_value(i,sort_col)
++ if val.lower().startswith(key.lower()):
++ return False
++ return True
++
+ def match(self, target, filter):
+ try:
+ f=filter.lower()
@@ -6093,7 +6121,7 @@
+
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/statusPage.py policycoreutils-2.0.31/gui/statusPage.py
--- nsapolicycoreutils/gui/statusPage.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/statusPage.py 2007-10-15 16:55:03.000000000 -0400
++++ policycoreutils-2.0.31/gui/statusPage.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,219 @@
+## statusPage.py - show selinux status
+## Copyright (C) 2006 Red Hat, Inc.
@@ -6316,8 +6344,8 @@
+
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/system-config-selinux.glade policycoreutils-2.0.31/gui/system-config-selinux.glade
--- nsapolicycoreutils/gui/system-config-selinux.glade 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/system-config-selinux.glade 2007-10-16 23:32:02.000000000 -0400
-@@ -0,0 +1,3321 @@
++++ policycoreutils-2.0.31/gui/system-config-selinux.glade 2007-11-05 16:28:49.000000000 -0500
+@@ -0,0 +1,3290 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
@@ -8315,7 +8343,7 @@
+ <widget class="GtkTreeView" id="booleansView">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
-+ <property name="headers_visible">False</property>
++ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">True</property>
@@ -8449,108 +8477,77 @@
+ </child>
+
+ <child>
-+ <widget class="GtkScrolledWindow" id="scrolledwindow17">
++ <widget class="GtkHBox" id="hbox14">
+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
-+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
-+ <property name="shadow_type">GTK_SHADOW_NONE</property>
-+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
++ <property name="homogeneous">False</property>
++ <property name="spacing">0</property>
+
+ <child>
-+ <widget class="GtkViewport" id="viewport1">
++ <widget class="GtkLabel" id="label58">
+ <property name="visible">True</property>
-+ <property name="shadow_type">GTK_SHADOW_IN</property>
-+
-+ <child>
-+ <widget class="GtkVBox" id="vbox19">
-+ <property name="visible">True</property>
-+ <property name="homogeneous">False</property>
-+ <property name="spacing">0</property>
-+
-+ <child>
-+ <widget class="GtkHBox" id="hbox8">
-+ <property name="visible">True</property>
-+ <property name="homogeneous">False</property>
-+ <property name="spacing">0</property>
-+
-+ <child>
-+ <widget class="GtkLabel" id="label52">
-+ <property name="visible">True</property>
-+ <property name="label" translatable="yes">Filter</property>
-+ <property name="use_underline">False</property>
-+ <property name="use_markup">False</property>
-+ <property name="justify">GTK_JUSTIFY_LEFT</property>
-+ <property name="wrap">False</property>
-+ <property name="selectable">False</property>
-+ <property name="xalign">0.5</property>
-+ <property name="yalign">0.5</property>
-+ <property name="xpad">0</property>
-+ <property name="ypad">0</property>
-+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-+ <property name="width_chars">-1</property>
-+ <property name="single_line_mode">False</property>
-+ <property name="angle">0</property>
-+ </widget>
-+ <packing>
-+ <property name="padding">10</property>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+
-+ <child>
-+ <widget class="GtkEntry" id="fcontextFilterEntry">
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <property name="editable">True</property>
-+ <property name="visibility">True</property>
-+ <property name="max_length">0</property>
-+ <property name="text" translatable="yes"></property>
-+ <property name="has_frame">True</property>
-+ <property name="invisible_char">â¢</property>
-+ <property name="activates_default">False</property>
-+ <signal name="changed" handler="on_booleansFilter_changed" last_modification_time="Fri, 06 Apr 2007 12:39:26 GMT"/>
-+ </widget>
-+ <packing>
-+ <property name="padding">0</property>
-+ <property name="expand">True</property>
-+ <property name="fill">True</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="padding">5</property>
-+ <property name="expand">False</property>
-+ <property name="fill">True</property>
-+ </packing>
-+ </child>
++ <property name="label" translatable="yes">Filter</property>
++ <property name="use_underline">False</property>
++ <property name="use_markup">False</property>
++ <property name="justify">GTK_JUSTIFY_LEFT</property>
++ <property name="wrap">False</property>
++ <property name="selectable">False</property>
++ <property name="xalign">0.5</property>
++ <property name="yalign">0.5</property>
++ <property name="xpad">0</property>
++ <property name="ypad">0</property>
++ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
++ <property name="width_chars">-1</property>
++ <property name="single_line_mode">False</property>
++ <property name="angle">0</property>
++ </widget>
++ <packing>
++ <property name="padding">10</property>
++ <property name="expand">False</property>
++ <property name="fill">False</property>
++ </packing>
++ </child>
+
-+ <child>
-+ <widget class="GtkTreeView" id="fcontextView">
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <property name="headers_visible">True</property>
-+ <property name="rules_hint">False</property>
-+ <property name="reorderable">False</property>
-+ <property name="enable_search">True</property>
-+ <property name="fixed_height_mode">False</property>
-+ <property name="hover_selection">False</property>
-+ <property name="hover_expand">False</property>
-+ </widget>
-+ <packing>
-+ <property name="padding">0</property>
-+ <property name="expand">True</property>
-+ <property name="fill">True</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ </child>
++ <child>
++ <widget class="GtkEntry" id="fcontextFilterEntry">
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="editable">True</property>
++ <property name="visibility">True</property>
++ <property name="max_length">0</property>
++ <property name="text" translatable="yes"></property>
++ <property name="has_frame">True</property>
++ <property name="invisible_char">â¢</property>
++ <property name="activates_default">False</property>
++ <signal name="changed" handler="on_fcontextFilter_changed" last_modification_time="Mon, 05 Nov 2007 21:22:11 GMT"/>
+ </widget>
++ <packing>
++ <property name="padding">0</property>
++ <property name="expand">True</property>
++ <property name="fill">True</property>
++ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
++ <property name="expand">False</property>
++ <property name="fill">False</property>
++ </packing>
++ </child>
++
++ <child>
++ <widget class="GtkTreeView" id="fcontextView">
++ <property name="visible">True</property>
++ <property name="can_focus">True</property>
++ <property name="headers_visible">True</property>
++ <property name="rules_hint">False</property>
++ <property name="reorderable">False</property>
++ <property name="enable_search">True</property>
++ <property name="fixed_height_mode">False</property>
++ <property name="hover_selection">False</property>
++ <property name="hover_expand">False</property>
++ </widget>
++ <packing>
++ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
@@ -9641,7 +9638,7 @@
+</glade-interface>
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/system-config-selinux.py policycoreutils-2.0.31/gui/system-config-selinux.py
--- nsapolicycoreutils/gui/system-config-selinux.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/system-config-selinux.py 2007-10-15 16:55:03.000000000 -0400
++++ policycoreutils-2.0.31/gui/system-config-selinux.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,175 @@
+#!/usr/bin/python
+#
@@ -9820,7 +9817,7 @@
+ app.stand_alone()
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/templates/boolean.py policycoreutils-2.0.31/gui/templates/boolean.py
--- nsapolicycoreutils/gui/templates/boolean.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/templates/boolean.py 2007-10-18 17:46:44.000000000 -0400
++++ policycoreutils-2.0.31/gui/templates/boolean.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,40 @@
+# Copyright (C) 2007 Red Hat
+# see file 'COPYING' for use and warranty information
@@ -9864,7 +9861,7 @@
+
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/templates/etc_rw.py policycoreutils-2.0.31/gui/templates/etc_rw.py
--- nsapolicycoreutils/gui/templates/etc_rw.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/templates/etc_rw.py 2007-10-18 17:46:44.000000000 -0400
++++ policycoreutils-2.0.31/gui/templates/etc_rw.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,129 @@
+# Copyright (C) 2007 Red Hat
+# see file 'COPYING' for use and warranty information
@@ -9997,7 +9994,7 @@
+"""
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/templates/executable.py policycoreutils-2.0.31/gui/templates/executable.py
--- nsapolicycoreutils/gui/templates/executable.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/templates/executable.py 2007-10-18 17:46:44.000000000 -0400
++++ policycoreutils-2.0.31/gui/templates/executable.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,331 @@
+# Copyright (C) 2007 Red Hat
+# see file 'COPYING' for use and warranty information
@@ -10332,7 +10329,7 @@
+
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/templates/__init__.py policycoreutils-2.0.31/gui/templates/__init__.py
--- nsapolicycoreutils/gui/templates/__init__.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/templates/__init__.py 2007-10-18 17:46:44.000000000 -0400
++++ policycoreutils-2.0.31/gui/templates/__init__.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2007 Red Hat, Inc.
@@ -10354,7 +10351,7 @@
+
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/templates/network.py policycoreutils-2.0.31/gui/templates/network.py
--- nsapolicycoreutils/gui/templates/network.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/templates/network.py 2007-10-18 17:46:44.000000000 -0400
++++ policycoreutils-2.0.31/gui/templates/network.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,80 @@
+te_port_types="""
+type TEMPLATETYPE_port_t;
@@ -10438,7 +10435,7 @@
+
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/templates/rw.py policycoreutils-2.0.31/gui/templates/rw.py
--- nsapolicycoreutils/gui/templates/rw.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/templates/rw.py 2007-10-18 17:46:44.000000000 -0400
++++ policycoreutils-2.0.31/gui/templates/rw.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,128 @@
+# Copyright (C) 2007 Red Hat
+# see file 'COPYING' for use and warranty information
@@ -10570,7 +10567,7 @@
+"""
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/templates/script.py policycoreutils-2.0.31/gui/templates/script.py
--- nsapolicycoreutils/gui/templates/script.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/templates/script.py 2007-10-18 17:46:44.000000000 -0400
++++ policycoreutils-2.0.31/gui/templates/script.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,91 @@
+# Copyright (C) 2007 Red Hat
+# see file 'COPYING' for use and warranty information
@@ -10665,7 +10662,7 @@
+"""
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/templates/semodule.py policycoreutils-2.0.31/gui/templates/semodule.py
--- nsapolicycoreutils/gui/templates/semodule.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/templates/semodule.py 2007-10-18 17:46:44.000000000 -0400
++++ policycoreutils-2.0.31/gui/templates/semodule.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,41 @@
+# Copyright (C) 2007 Red Hat
+# see file 'COPYING' for use and warranty information
@@ -10710,7 +10707,7 @@
+
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/templates/tmp.py policycoreutils-2.0.31/gui/templates/tmp.py
--- nsapolicycoreutils/gui/templates/tmp.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/templates/tmp.py 2007-10-18 17:46:44.000000000 -0400
++++ policycoreutils-2.0.31/gui/templates/tmp.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,97 @@
+# Copyright (C) 2007 Red Hat
+# see file 'COPYING' for use and warranty information
@@ -10811,7 +10808,7 @@
+
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/templates/user.py policycoreutils-2.0.31/gui/templates/user.py
--- nsapolicycoreutils/gui/templates/user.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/templates/user.py 2007-10-18 17:46:44.000000000 -0400
++++ policycoreutils-2.0.31/gui/templates/user.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,137 @@
+# Copyright (C) 2007 Red Hat
+# see file 'COPYING' for use and warranty information
@@ -10952,7 +10949,7 @@
+"""
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/templates/var_lib.py policycoreutils-2.0.31/gui/templates/var_lib.py
--- nsapolicycoreutils/gui/templates/var_lib.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/templates/var_lib.py 2007-10-18 17:46:44.000000000 -0400
++++ policycoreutils-2.0.31/gui/templates/var_lib.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,162 @@
+# Copyright (C) 2007 Red Hat
+# see file 'COPYING' for use and warranty information
@@ -11118,7 +11115,7 @@
+"""
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/templates/var_log.py policycoreutils-2.0.31/gui/templates/var_log.py
--- nsapolicycoreutils/gui/templates/var_log.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/templates/var_log.py 2007-10-25 16:52:06.000000000 -0400
++++ policycoreutils-2.0.31/gui/templates/var_log.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,110 @@
+# Copyright (C) 2007 Red Hat
+# see file 'COPYING' for use and warranty information
@@ -11232,7 +11229,7 @@
+"""
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/templates/var_run.py policycoreutils-2.0.31/gui/templates/var_run.py
--- nsapolicycoreutils/gui/templates/var_run.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/templates/var_run.py 2007-10-18 17:46:44.000000000 -0400
++++ policycoreutils-2.0.31/gui/templates/var_run.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,119 @@
+# Copyright (C) 2007 Red Hat
+# see file 'COPYING' for use and warranty information
@@ -11355,7 +11352,7 @@
+
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/templates/var_spool.py policycoreutils-2.0.31/gui/templates/var_spool.py
--- nsapolicycoreutils/gui/templates/var_spool.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/templates/var_spool.py 2007-10-18 17:46:44.000000000 -0400
++++ policycoreutils-2.0.31/gui/templates/var_spool.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,131 @@
+# Copyright (C) 2007 Red Hat
+# see file 'COPYING' for use and warranty information
@@ -11490,7 +11487,7 @@
+"""
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/translationsPage.py policycoreutils-2.0.31/gui/translationsPage.py
--- nsapolicycoreutils/gui/translationsPage.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/translationsPage.py 2007-10-15 16:55:03.000000000 -0400
++++ policycoreutils-2.0.31/gui/translationsPage.py 2007-11-02 15:54:42.000000000 -0400
@@ -0,0 +1,118 @@
+## translationsPage.py - show selinux translations
+## Copyright (C) 2006 Red Hat, Inc.
@@ -11612,8 +11609,8 @@
+ self.store.set_value(iter, 1, translation)
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/usersPage.py policycoreutils-2.0.31/gui/usersPage.py
--- nsapolicycoreutils/gui/usersPage.py 1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.31/gui/usersPage.py 2007-10-15 16:55:03.000000000 -0400
-@@ -0,0 +1,172 @@
++++ policycoreutils-2.0.31/gui/usersPage.py 2007-11-05 15:47:58.000000000 -0500
+@@ -0,0 +1,178 @@
+## usersPage.py - show selinux mappings
+## Copyright (C) 2006 Red Hat, Inc.
+
@@ -11739,7 +11736,9 @@
+ range = self.mlsRangeEntry.get_text()
+ roles = self.selinuxRolesEntry.get_text()
+
++ self.wait()
+ (rc, out) = commands.getstatusoutput("semanage user -a -R '%s' -r %s-%s -P %s %s" % (roles, level, range, prefix, user))
++ self.ready()
+ if rc != 0:
+ self.error(out)
+ return False
@@ -11757,7 +11756,9 @@
+ range = self.mlsRangeEntry.get_text()
+ roles = self.selinuxRolesEntry.get_text()
+
++ self.wait()
+ (rc, out) = commands.getstatusoutput("semanage user -m -R '%s' -r %s-%s -P %s %s" % (roles, level, range, prefix, user))
++ self.ready()
+
+ if rc != 0:
+ self.error(out)
@@ -11777,7 +11778,9 @@
+ if user == "root" or user == "user_u":
+ raise ValueError(_("SELinux user '%s' is required") % user)
+
++ self.wait()
+ (rc, out) = commands.getstatusoutput("semanage user -d %s" % user)
++ self.ready()
+ if rc != 0:
+ self.error(out)
+ return False
Index: policycoreutils.spec
===================================================================
RCS file: /cvs/extras/rpms/policycoreutils/F-8/policycoreutils.spec,v
retrieving revision 1.470
retrieving revision 1.471
diff -u -r1.470 -r1.471
--- policycoreutils.spec 2 Nov 2007 20:27:44 -0000 1.470
+++ policycoreutils.spec 5 Nov 2007 21:31:42 -0000 1.471
@@ -6,7 +6,7 @@
Summary: SELinux policy core utilities
Name: policycoreutils
Version: 2.0.31
-Release: 11%{?dist}
+Release: 12%{?dist}
License: GPLv2+
Group: System Environment/Base
Source: http://www.nsa.gov/selinux/archives/policycoreutils-%{version}.tgz
@@ -208,6 +208,9 @@
%changelog
+* Mon Nov 5 2007 Dan Walsh <dwalsh at redhat.com> 2.0.31-12
+- Fix filter and search capabilities, add wait cursor
+
* Fri Nov 2 2007 Dan Walsh <dwalsh at redhat.com> 2.0.31-11
- Translate booleans via policy.xml
- Allow booleans to be set via semanage
More information about the fedora-extras-commits
mailing list