[kernel] r7291 -
dists/trunk/linux-2.6/debian/lib/python/debian_linux
Bastian Blank
waldi at costa.debian.org
Sun Sep 3 08:10:04 UTC 2006
Author: waldi
Date: Sun Sep 3 08:10:03 2006
New Revision: 7291
Added:
dists/trunk/linux-2.6/debian/lib/python/debian_linux/kconfig.py
Log:
debian/lib/python/debian_linux/kconfig.py: Add.
Added: dists/trunk/linux-2.6/debian/lib/python/debian_linux/kconfig.py
==============================================================================
--- (empty file)
+++ dists/trunk/linux-2.6/debian/lib/python/debian_linux/kconfig.py Sun Sep 3 08:10:03 2006
@@ -0,0 +1,77 @@
+__all__ = (
+ "kconfigfile",
+)
+
+class _entry(object):
+ __slots__ = "name"
+
+ def __init__(self, name):
+ self.name = name
+
+class _entry_string(_entry):
+ __slots__ = "value"
+
+ def __init__(self, name, value):
+ super(_entry_string, self).__init__(name)
+ self.value = value
+
+ def __str__(self):
+ return "CONFIG_%s=%s" % (self.name, self.value)
+
+class _entry_tristate(_entry):
+ __slots__ = "value"
+
+ VALUE_NO = 0
+ VALUE_YES = 1
+ VALUE_MOD = 2
+
+ def __init__(self, name, value = None):
+ super(_entry_tristate, self).__init__(name)
+
+ if value == 'n' or value is None:
+ self.value = self.VALUE_NO
+ elif value == 'y':
+ self.value = self.VALUE_YES
+ elif value == 'm':
+ self.value = self.VALUE_MOD
+
+ def __str__(self):
+ conf = "CONFIG_%s" % self.name
+ if self.value == self.VALUE_NO:
+ return "# %s is not set" % conf
+ elif self.value == self.VALUE_YES:
+ return "%s=y" % conf
+ elif self.value == self.VALUE_MOD:
+ return "%s=m" % conf
+
+class kconfigfile(dict):
+ def __str__(self):
+ ret = []
+ for i in self.str_iter():
+ ret.append(i)
+ return '\n'.join(ret) + '\n'
+
+ def read(self, f):
+ for line in iter(f.readlines()):
+ line = line.strip()
+ if line.startswith("CONFIG_"):
+ i = line.find('=')
+ option = line[7:i]
+ value = line[i+1:]
+ if value in ('y', 'm'):
+ entry = _entry_tristate(option, value)
+ else:
+ entry = _entry_string(option, value)
+ self[option] = entry
+ elif line.startswith("# CONFIG_"):
+ option = line[9:-11]
+ self[option] = _entry_tristate(option)
+ elif line.startswith("#") or not line:
+ pass
+ else:
+ raise RuntimeError, "Can't recognize %s" % line
+
+ def str_iter(self):
+ for key, value in self.iteritems():
+ yield str(value)
+
More information about the Kernel-svn-changes
mailing list