diff options
Diffstat (limited to 'debian/lib/python/debian_linux/utils.py')
-rw-r--r-- | debian/lib/python/debian_linux/utils.py | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/debian/lib/python/debian_linux/utils.py b/debian/lib/python/debian_linux/utils.py index 577ad319c55d..a43e986982b2 100644 --- a/debian/lib/python/debian_linux/utils.py +++ b/debian/lib/python/debian_linux/utils.py @@ -24,20 +24,31 @@ class Templates(object): filename = "%s/%s%s" % (dir, name, suffix) if os.path.exists(filename): with codecs.open(filename, 'r', 'utf-8') as f: + mode = os.stat(f.fileno()).st_mode if prefix == 'control': - return read_control(f) + return (read_control(f), mode) if prefix == 'tests-control': - return read_tests_control(f) - return f.read() + return (read_tests_control(f), mode) + return (f.read(), mode) - def get(self, key, default=None): - if key in self._cache: + def _get(self, key): + try: return self._cache[key] + except KeyError: + self._cache[key] = value = self._read(key) + return value - value = self._cache.setdefault(key, self._read(key)) + def get(self, key, default=None): + value = self._get(key) if value is None: return default - return value + return value[0] + + def get_mode(self, key): + value = self._get(key) + if value is None: + return None + return value[1] def read_control(f): |