summaryrefslogtreecommitdiff
path: root/libmat2/archive.py
diff options
context:
space:
mode:
authorjvoisin2025-04-03 15:24:34 +0200
committerjvoisin2025-04-03 15:24:34 +0200
commite740a9559f6e4a233c32a6b48ee0cd7efac4efbf (patch)
tree7c3bac9e662151149f625f5ba82a5dea9b17790b /libmat2/archive.py
parent2b58eece509c22a692f4de2512ec41c00e1d2728 (diff)
Properly handle an exception
``` Traceback (most recent call last): File "/builds/jvoisin/mat2/tests/test_deep_cleaning.py", line 147, in test_office meta = p.get_meta() File "/builds/jvoisin/mat2/libmat2/archive.py", line 155, in get_meta zin.extract(member=item, path=temp_folder) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/zipfile/__init__.py", line 1762, in extract return self._extract_member(member, path, pwd) ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/zipfile/__init__.py", line 1829, in _extract_member os.makedirs(upperdirs, exist_ok=True) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen os>", line 227, in makedirs OSError: [Errno 28] No space left on device: '/tmp/tmptl1ibyv6/word/theme' ``` This should never happen™, but just in case…
Diffstat (limited to 'libmat2/archive.py')
-rw-r--r--libmat2/archive.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/libmat2/archive.py b/libmat2/archive.py
index 13f9188..71ece3d 100644
--- a/libmat2/archive.py
+++ b/libmat2/archive.py
@@ -152,7 +152,10 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser):
152 self.filename, member_name, full_path) 152 self.filename, member_name, full_path)
153 break 153 break
154 154
155 zin.extract(member=item, path=temp_folder) 155 try:
156 zin.extract(member=item, path=temp_folder)
157 except OSError as e:
158 logging.error("Unable to extraxt %s from %s: %s", item, self.filename, e)
156 159
157 os.chmod(full_path, stat.S_IRUSR) 160 os.chmod(full_path, stat.S_IRUSR)
158 161