mirror of https://github.com/borgbackup/borg.git
Improve handling of systems with improperly configured file system encoding
Closes #289
This commit is contained in:
parent
ed9475d7cd
commit
64e8ea72ac
1
CHANGES
1
CHANGES
|
@ -7,6 +7,7 @@ Version 0.16
|
|||
------------
|
||||
|
||||
(bugfix release, released on X)
|
||||
- Improve handling of systems with improperly configured file system encoding (#289)
|
||||
- Fix "All archives" output for attic info. (#183)
|
||||
- More user friendly error message when repository key file is not found (#236)
|
||||
- Fix parsing of iso 8601 timestamps with zero microseconds (#282)
|
||||
|
|
|
@ -119,6 +119,10 @@ class Archive:
|
|||
class AlreadyExists(Error):
|
||||
"""Archive {} already exists"""
|
||||
|
||||
class IncompatibleFilesystemEncodingError(Error):
|
||||
"""Failed to encode filename "{}" into file system encoding "{}". Consider configuring the LANG environment variable."""
|
||||
|
||||
|
||||
def __init__(self, repository, key, manifest, name, cache=None, create=False,
|
||||
checkpoint_interval=300, numeric_owner=False):
|
||||
self.cwd = os.getcwd()
|
||||
|
@ -247,6 +251,8 @@ class Archive:
|
|||
os.rmdir(path)
|
||||
else:
|
||||
os.unlink(path)
|
||||
except UnicodeEncodeError:
|
||||
raise self.IncompatibleFilesystemEncodingError(path, sys.getfilesystemencoding())
|
||||
except OSError:
|
||||
pass
|
||||
mode = item[b'mode']
|
||||
|
|
|
@ -188,6 +188,8 @@ Type "Yes I am sure" if you understand this and want to continue.\n""")
|
|||
def do_extract(self, args):
|
||||
"""Extract archive contents"""
|
||||
# be restrictive when restoring files, restore permissions later
|
||||
if sys.getfilesystemencoding() == 'ascii':
|
||||
print('Warning: File system encoding is "ascii", extracting non-ascii filenames will not be supported.')
|
||||
os.umask(0o077)
|
||||
repository = self.open_repository(args.archive)
|
||||
manifest, key = Manifest.load(repository)
|
||||
|
|
Loading…
Reference in New Issue