From 90c164693ee2eb32e05325c14219c9329d14c386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrg=20Billeter?= Date: Tue, 7 Apr 2020 17:07:41 +0200 Subject: _filebaseddirectory.py: Fix encoding in open_file() for binary files Python doesn't ignore `encoding` for binary files, it must be `None`. --- src/buildstream/storage/_filebaseddirectory.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/buildstream/storage') diff --git a/src/buildstream/storage/_filebaseddirectory.py b/src/buildstream/storage/_filebaseddirectory.py index 53a87b64c..1500dd78e 100644 --- a/src/buildstream/storage/_filebaseddirectory.py +++ b/src/buildstream/storage/_filebaseddirectory.py @@ -256,10 +256,15 @@ class FileBasedDirectory(Directory): if mode not in ["r", "rb", "w", "wb", "x", "xb"]: raise ValueError("Unsupported mode: `{}`".format(mode)) + if "b" in mode: + encoding = None + else: + encoding = "utf-8" + if "r" in mode: - return open(newpath, mode=mode, encoding="utf-8") + return open(newpath, mode=mode, encoding=encoding) else: - return utils.save_file_atomic(newpath, mode=mode, encoding="utf-8") + return utils.save_file_atomic(newpath, mode=mode, encoding=encoding) def __str__(self): # This returns the whole path (since we don't know where the directory started) -- cgit v1.2.1