[selinux-policy: 314/3172] speed improvement

Daniel J Walsh dwalsh at fedoraproject.org
Thu Oct 7 19:32:05 UTC 2010


commit 5d9417870c22e6aada78f83baa28540fde293f77
Author: Chris PeBenito <cpebenito at tresys.com>
Date:   Thu Jun 9 20:53:45 2005 +0000

    speed improvement

 refpolicy/support/sedoctool.py |   61 +++++++++++++++++++++++-----------------
 1 files changed, 35 insertions(+), 26 deletions(-)
---
diff --git a/refpolicy/support/sedoctool.py b/refpolicy/support/sedoctool.py
index 7b67287..614ecb4 100755
--- a/refpolicy/support/sedoctool.py
+++ b/refpolicy/support/sedoctool.py
@@ -16,8 +16,10 @@ import sys
 import getopt
 import pyplate
 import os
-from xml.dom.ext import *
-from xml.dom.ext.reader import Sax2
+import string
+#from xml.dom.ext import *
+#from xml.dom.ext.reader import Sax2
+from xml.dom.minidom import parse, parseString
 
 def read_policy_xml(filename):
 	try:
@@ -26,8 +28,9 @@ def read_policy_xml(filename):
 		error("error opening " + filename)
 
 	try:
-		reader = Sax2.Reader()
-		doc = reader.fromString(xml_fh.read())
+		#reader = Sax2.Reader()
+		#doc = reader.fromString(xml_fh.read())
+		doc = parseString(xml_fh.read())
 	except: 
 		xml_fh.close()
 		error("Error while parsing xml")
@@ -42,10 +45,10 @@ def gen_tunable_conf(doc, file):
 			file.write("# %s\n" % line)
 		tun_name = tun_val = None
         	for (name, value) in node.attributes.items():
-			if name[1] == "name":
-				tun_name = value.value
-			elif name[1] == "dftval":
-				tun_val = value.value
+			if name == "name":
+				tun_name = value
+			elif name == "dftval":
+				tun_val = value
 
 			if tun_name and tun_val:
 	            		file.write("%s = %s\n\n" % (tun_name, tun_val))
@@ -58,10 +61,10 @@ def gen_module_conf(doc, file):
 	for node in doc.getElementsByTagName("module"):
 		mod_name = mod_layer = None
 		for (name, value) in node.attributes.items():
-			if name[1] == "name":
-				mod_name = value.value
-			if name[1] == "layer":
-				mod_layer = value.value
+			if name == "name":
+				mod_name = value
+			if name == "layer":
+				mod_layer = value
 
 			if mod_name and mod_layer:
 				file.write("# Layer: %s\n# Module: %s\n#\n" % (mod_layer,mod_name))
@@ -116,13 +119,12 @@ def gen_docs(doc, dir, templatedir):
 	for node in doc.getElementsByTagName("module"):
                 mod_name = mod_layer = interface_buf = ''
 		for (name, value) in node.attributes.items():
-			if name[1] == "name":
-				mod_name = value.value
-			if name[1] == "layer":
-				mod_layer = value.value
+			if name == "name":
+				mod_name = value
+			if name == "layer":
+				mod_layer = value
 		for desc in node.getElementsByTagName("summary"):
 			mod_summary = desc.firstChild.data
-	
 		if not module_list.has_key(mod_layer):
 			module_list[mod_layer] = {}
 
@@ -171,10 +173,10 @@ def gen_docs(doc, dir, templatedir):
 	for node in doc.getElementsByTagName("module"):
                 mod_name = mod_layer = interface_buf = ''
 		for (name, value) in node.attributes.items():
-			if name[1] == "name":
-				mod_name = value.value
-			if name[1] == "layer":
-				mod_layer = value.value
+			if name == "name":
+				mod_name = value
+			if name == "layer":
+				mod_layer = value
 		for desc in node.getElementsByTagName("summary"):
 			mod_summary = desc.firstChild.data
 		for interface in node.getElementsByTagName("interface"):
@@ -182,7 +184,7 @@ def gen_docs(doc, dir, templatedir):
 			interface_secdesc = None
 			interface_tpl = pyplate.Template(intdata)
 			for i,v in interface.attributes.items():
-				interface_name = v.value
+				interface_name = v
 			for desc in interface.getElementsByTagName("description"):
 				interface_desc = desc.firstChild.data
 			for desc in interface.getElementsByTagName("securitydesc"):
@@ -194,10 +196,10 @@ def gen_docs(doc, dir, templatedir):
 				paramname = None
 				paramopt = "No"
 				for name,val in args.attributes.items():
-					if name[1] == "name":
-						paramname = val.value
-					if name[1] == "optional":
-						if val.value == "true":
+					if name == "name":
+						paramname = val
+					if name == "optional":
+						if val == "true":
 							paramopt = "yes"
 				parameter = { "name" : paramname,
 					      "desc" : paramdesc,
@@ -247,6 +249,13 @@ def usage():
 	sys.stdout.write("-x --xml <file>		--	filename to read xml data from\n")
 	sys.stdout.write("-T --templates <dir>		--	template directory for documents\n")
 
+def sort_dict(d):
+    our_list = d.items()
+    our_list.sort()
+    k = {}   
+    for item in our_list:
+        k[item[0]] = item[1]
+    return k
 
 try:
 	opts, args = getopt.getopt(sys.argv[1:], "t:m:d:x:T:", ["tunables","modules","docs","xml", "templates"])


More information about the scm-commits mailing list