1 from __future__ import absolute_import
3 from .utils import SortedDict
9 class EntryString(object):
10 __slots__ = "name", "value"
12 def __init__(self, name, value):
17 return "CONFIG_%s=%s" % (self.name, self.value)
19 class EntryTristate(object):
20 __slots__ = "name", "value"
26 def __init__(self, name, value = None):
28 if value == 'n' or value is None:
29 self.value = self.VALUE_NO
31 self.value = self.VALUE_YES
33 self.value = self.VALUE_MOD
36 conf = "CONFIG_%s" % self.name
37 if self.value == self.VALUE_NO:
38 return "# %s is not set" % conf
39 elif self.value == self.VALUE_YES:
41 elif self.value == self.VALUE_MOD:
44 class KconfigFile(SortedDict):
47 for i in self.str_iter():
49 return '\n'.join(ret) + '\n'
52 for line in iter(f.readlines()):
54 if line.startswith("CONFIG_"):
58 self.set(option, value)
59 elif line.startswith("# CONFIG_"):
62 elif line.startswith("#") or not line:
65 raise RuntimeError, "Can't recognize %s" % line
67 def set(self, key, value):
68 if value in ('y', 'm', 'n'):
69 entry = EntryTristate(key, value)
71 entry = EntryString(key, value)
75 for key, value in self.iteritems():