[kernel] r10846 - people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package

Bastian Blank waldi at alioth.debian.org
Fri Mar 14 13:07:57 UTC 2008


Author: waldi
Date: Fri Mar 14 13:07:55 2008
New Revision: 10846

Log:
lib/kconfigeditor/kconfig/package/files.py:
Only accept option with prompt if defined more than once.


Modified:
   people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py

Modified: people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py
==============================================================================
--- people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py	(original)
+++ people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py	Fri Mar 14 13:07:55 2008
@@ -110,41 +110,59 @@
 
         self.read(fd)
 
-    def _dump_file_choice(self, processed, ignored, f):
+    def _dump_file_choice(self, processed, ignored, have_prompt, f):
         ret = []
         for i in f:
             if isinstance(i, FileConfig):
-                ret.extend(self._dump_file_config(processed, ignored, i))
+                ret.extend(self._dump_file_config(processed, ignored, have_prompt, i))
         if ret:
             ret.insert(0, "## choice: %s" % f.prompt)
             ret.append('## end choice')
         return ret
 
-    def _dump_file_config(self, processed, ignored, i):
-        ret = []
+    def _dump_file_config(self, processed, ignored, have_prompt, i):
         e = self.get(i.name, None)
-        if e is not None:
-            if i.name in processed:
-                pass
-            elif not i.prompt and ignored is not None:
+        if e is None:
+            return []
+
+        if i.name in processed:
+            return []
+        if not i.prompt:
+            if i.name in have_prompt:
+                return []
+            if ignored is not None:
                 ignored.add(i.name)
-            else:
-                processed.add(i.name)
-                ret.append(e)
-        return ret
+                return []
+        processed.add(i.name)
+        return [e]
 
-    def _dump_file(self, processed, ignored, f):
+    def _dump_file(self, processed, ignored, have_prompt, f):
         ret = []
         for i in f:
             if isinstance(i, FileConfig):
-                ret.extend(self._dump_file_config(processed, ignored, i))
+                ret.extend(self._dump_file_config(processed, ignored, have_prompt, i))
             elif isinstance(i, FileChoice):
-                ret.extend(self._dump_file_choice(processed, ignored, i))
+                ret.extend(self._dump_file_choice(processed, ignored, have_prompt, i))
         if ret:
             ret[0:0] = ["##", "## file: %s" % f.filename, "##"]
             ret.append('')
         return ret
 
+    def _dump_prompt_file_config(self, have_prompt, i):
+        e = self.get(i.name, None)
+        if e is not None:
+            if i.prompt:
+                have_prompt.add(i.name)
+
+    def _dump_prompt_file(self, have_prompt, f):
+        for i in f:
+            if isinstance(i, FileConfig):
+                self._dump_prompt_file_config(have_prompt, i)
+            elif isinstance(i, FileChoice):
+                for i1 in i:
+                    if isinstance(i1, FileConfig):
+                        self._dump_prompt_file_config(have_prompt, i1)
+
     def dump(self, root, menufiles, ignore_silent = False):
         filename = os.path.join(root, self.filename)
         if not os.path.exists(os.path.dirname(filename)):
@@ -161,13 +179,17 @@
 
         menufiles.sort(key = menufiles_cmp_key)
 
+        have_prompt = set()
+        for f in menufiles:
+            self._dump_prompt_file(have_prompt, f)
+
         ret = []
         processed = set()
         ignored_sub = ignored = set()
         if not ignore_silent:
             ignored_sub = None
         for f in menufiles:
-            ret.extend(self._dump_file(processed, ignored_sub, f))
+            ret.extend(self._dump_file(processed, ignored_sub, have_prompt, f))
 
         s = set(self.keys())
         unprocessed = s - processed - ignored



More information about the Kernel-svn-changes mailing list