summaryrefslogtreecommitdiff
path: root/kconfiglib.py
diff options
context:
space:
mode:
authorUlf Magnusson <ulfalizer@gmail.com>2015-06-07 06:07:19 +0200
committerUlf Magnusson <ulfalizer@gmail.com>2015-06-07 06:36:42 +0200
commit5e54e2cd43c5f3c530706291d860ba1bf817986c (patch)
treefe36d3e04469c1906f5b389015ac16695223dbdb /kconfiglib.py
parent9947a7c70b3a3d1a2b0849769a65892b866d68a2 (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.py35
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}. '