diff options
| author | Ulf Magnusson <ulfalizer@gmail.com> | 2015-06-07 06:07:19 +0200 |
|---|---|---|
| committer | Ulf Magnusson <ulfalizer@gmail.com> | 2015-06-07 06:36:42 +0200 |
| commit | 5e54e2cd43c5f3c530706291d860ba1bf817986c (patch) | |
| tree | fe36d3e04469c1906f5b389015ac16695223dbdb /kconfiglib.py | |
| parent | 9947a7c70b3a3d1a2b0849769a65892b866d68a2 (diff) | |
Unset user values when loading a zero-byte .config.
Minor bug due to an early return from load_config(). Piggyback a
refactoring of the code. Reading the header is unlikely to be
performance-sensitive.
Add a testcase too.
Diffstat (limited to 'kconfiglib.py')
| -rw-r--r-- | kconfiglib.py | 35 |
1 files changed, 13 insertions, 22 deletions
diff --git a/kconfiglib.py b/kconfiglib.py index e03935a..dac21f6 100644 --- a/kconfiglib.py +++ b/kconfiglib.py @@ -231,37 +231,28 @@ class Config(object): self.config_filename = filename + # # Read header - - self.config_header = None + # def is_header_line(line): - return line.startswith("#") and not unset_re_match(line) - - first_line = line_feeder.get_next() - if first_line is None: - return - - if not is_header_line(first_line): - line_feeder.go_back() - else: - self.config_header = first_line[1:] + return line is not None and line.startswith("#") and \ + not unset_re_match(line) - # Read remaining header lines - while 1: - line = line_feeder.get_next() - if line is None: - break - if not is_header_line(line): - line_feeder.go_back() - break - self.config_header += line[1:] + self.config_header = None + line = line_feeder.peek_next() + if is_header_line(line): + self.config_header = "" + while is_header_line(line_feeder.peek_next()): + self.config_header += line_feeder.get_next()[1:] # Remove trailing newline if self.config_header.endswith("\n"): self.config_header = self.config_header[:-1] - # Read assignments + # + # Read assignments. Hotspot for some workloads. + # def warn_override(filename, linenr, name, old_user_val, new_user_val): self._warn('overriding the value of {0}. ' |
