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 _______________________________________________ Kernel-svn-changes mailing list Kernel-svn-changes@lists.alioth.debian.org http://lists.alioth.debian.org/mailman/listinfo/kernel-svn-changes