1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2025-02-24 15:12:00 +00:00

Merge pull request #4713 from saurvs/forward-port-4698

Forward port #4698
This commit is contained in:
TW 2019-08-09 16:02:29 +02:00 committed by GitHub
commit 97eca3d287
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2,6 +2,7 @@
import mmap
import os
import shutil
import stat
import struct
import time
from binascii import hexlify, unhexlify
@ -233,11 +234,17 @@ def check_can_create_repository(self, path):
repository, user's can only use the quota'd repository, when their --restrict-to-path points
at the user's repository.
"""
if os.path.exists(path):
try:
st = os.stat(path)
except FileNotFoundError:
pass # nothing there!
else:
# there is something already there!
if self.is_repository(path):
raise self.AlreadyExists(path)
if not os.path.isdir(path) or os.listdir(path):
if not stat.S_ISDIR(st.st_mode) or os.listdir(path):
raise self.PathAlreadyExists(path)
# an empty directory is acceptable for us.
while True:
# Check all parent directories for Borg's repository README
@ -386,8 +393,12 @@ def migrate_lock(self, old_id, new_id):
def open(self, path, exclusive, lock_wait=None, lock=True):
self.path = path
if not os.path.isdir(path):
try:
st = os.stat(path)
except FileNotFoundError:
raise self.DoesNotExist(path)
if not stat.S_ISDIR(st.st_mode):
raise self.InvalidRepository(path)
if lock:
self.lock = Lock(os.path.join(path, 'lock'), exclusive, timeout=lock_wait).acquire()
else: