summaryrefslogtreecommitdiffstats
path: root/simpleconfig.py
diff options
context:
space:
mode:
authorJeremy Katz <katzj@redhat.com>2009-06-30 16:02:34 -0400
committerJeremy Katz <katzj@redhat.com>2009-07-01 10:21:37 -0400
commitdb6476fb40dd04e13c9a8973b2d00d7c1a74154d (patch)
treee1b837e5803b9475b2a284669c26ae31bf1570e3 /simpleconfig.py
parent730ced61e467e10ed620c2a6ee18c7695837a6b8 (diff)
downloadanaconda-db6476fb40dd04e13c9a8973b2d00d7c1a74154d.tar.gz
anaconda-db6476fb40dd04e13c9a8973b2d00d7c1a74154d.tar.xz
anaconda-db6476fb40dd04e13c9a8973b2d00d7c1a74154d.zip
Move simpleconfig (back) into anaconda from rhpl
Diffstat (limited to 'simpleconfig.py')
-rw-r--r--simpleconfig.py88
1 files changed, 88 insertions, 0 deletions
diff --git a/simpleconfig.py b/simpleconfig.py
new file mode 100644
index 000000000..b3e6c9078
--- /dev/null
+++ b/simpleconfig.py
@@ -0,0 +1,88 @@
+#
+# simpleconifg.py - representation of a simple configuration file (sh-like)
+#
+# Matt Wilson <msw@redhat.com>
+# Jeremy Katz <katzj@redhat.com>
+#
+# Copyright 1999-2002 Red Hat, Inc.
+#
+# This software may be freely redistributed under the terms of the GNU
+# library public license.
+#
+# You should have received a copy of the GNU Library Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+
+import string
+import os
+
+# use our own ASCII only uppercase function to avoid locale issues
+# not going to be fast but not important
+def uppercase_ASCII_string(str):
+ newstr = ""
+ for i in range(0,len(str)):
+ if str[i] in string.lowercase:
+ newstr += chr(ord(str[i])-32)
+ else:
+ newstr += str[i]
+
+ return newstr
+
+class SimpleConfigFile:
+ def __str__ (self):
+ s = ""
+ keys = self.info.keys ()
+ keys.sort ()
+ for key in keys:
+ # FIXME - use proper escaping
+ if type (self.info[key]) == type(""):
+ s = s + key + "=\"" + self.info[key] + "\"\n"
+ return s
+
+ def __init__ (self):
+ self.info = {}
+
+ def write(self, file):
+ f = open(file, "w")
+ f.write(self.__str__())
+ f.close()
+
+ def read(self, file):
+ if not os.access(file, os.R_OK):
+ return
+
+ f = open(file, "r")
+ lines = f.readlines()
+ f.close()
+
+ for line in lines:
+ fields = line[:-1].split('=', 2)
+ if len(fields) < 2:
+ # how am I supposed to know what to do here?
+ continue
+ key = uppercase_ASCII_string(fields[0])
+ value = fields[1]
+ # XXX hack
+ value = value.replace('"', '')
+ value = value.replace("'", '')
+ self.info[key] = value
+
+ def set (self, *args):
+ for (key, data) in args:
+ self.info[uppercase_ASCII_string(key)] = data
+
+ def unset (self, *keys):
+ for key in keys:
+ key = uppercase_ASCII_string(key)
+ if self.info.has_key (key):
+ del self.info[key]
+
+ def get (self, key):
+ key = uppercase_ASCII_string(key)
+ if self.info.has_key (key):
+ return self.info[key]
+ else:
+ return ""
+
+