Преглед на файлове

more detailled warnings for source file OSErrors

Thomas Waldmann преди 1 година
родител
ревизия
2fda86ce61
променени са 1 файла, в които са добавени 22 реда и са изтрити 0 реда
  1. 22 0
      src/borg/helpers/errors.py

+ 22 - 0
src/borg/helpers/errors.py

@@ -1,3 +1,4 @@
+import errno
 import os
 import os
 
 
 from ..constants import *  # NOQA
 from ..constants import *  # NOQA
@@ -108,6 +109,27 @@ class BackupOSWarning(BorgWarning):
     """{}: {}"""
     """{}: {}"""
     exit_mcode = 104
     exit_mcode = 104
 
 
+    @property
+    def exit_code(self):
+        if not modern_ec:
+            return EXIT_WARNING
+        exc = self.args[1]
+        assert isinstance(exc, BackupOSError)
+        if exc.errno in (errno.EPERM, errno.EACCES, ):
+            return PermissionWarning.exit_mcode
+        elif exc.errno in (errno.EIO, ):
+            return IOWarning.exit_mcode
+        else:
+            return self.exit_mcode
+
+
+class PermissionWarning(BorgWarning):
+    exit_mcode = 105
+
+
+class IOWarning(BorgWarning):
+    exit_mcode = 106
+
 
 
 class BackupError(Exception):
 class BackupError(Exception):
     """
     """