aboutsummaryrefslogtreecommitdiffstats
path: root/debian/lib/python/debian_linux/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'debian/lib/python/debian_linux/utils.py')
-rw-r--r--debian/lib/python/debian_linux/utils.py25
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):