From: David Stainton Date: Tue, 8 Dec 2015 00:47:27 +0000 (+0200) Subject: Add umask to Downloader X-Git-Url: https://git.rkrishnan.org/components/com_hotproperty/somewhere?a=commitdiff_plain;h=f6db49f594b89a73036415db71e4a149ee757ed2;p=tahoe-lafs%2Ftahoe-lafs.git Add umask to Downloader --- diff --git a/src/allmydata/frontends/magic_folder.py b/src/allmydata/frontends/magic_folder.py index 62e6988d..317500a9 100644 --- a/src/allmydata/frontends/magic_folder.py +++ b/src/allmydata/frontends/magic_folder.py @@ -484,10 +484,12 @@ class WriteFileMixin(object): # ensure parent directory exists head, tail = os.path.split(abspath_u) - mode = 0777 # XXX - fileutil.make_dirs(head, mode) + old_mask = os.umask(self._umask) + fileutil.make_dirs(head, ~ self._umask) fileutil.write(replacement_path_u, file_contents) + os.umask(old_mask) + os.utime(replacement_path_u, (now, now - self.FUDGE_SECONDS)) if is_conflict: print "0x00 ------------ <><> is conflict; calling _rename_conflicted_file... %r %r" % (abspath_u, replacement_path_u) @@ -525,7 +527,7 @@ class Downloader(QueueMixin, WriteFileMixin): REMOTE_SCAN_INTERVAL = 3 # facilitates tests def __init__(self, client, local_path_u, db, collective_dirnode, - upload_readonly_dircap, clock, is_upload_pending): + upload_readonly_dircap, clock, is_upload_pending, umask = 0123): QueueMixin.__init__(self, client, local_path_u, db, 'downloader', clock) if not IDirectoryNode.providedBy(collective_dirnode): @@ -538,7 +540,7 @@ class Downloader(QueueMixin, WriteFileMixin): self._collective_dirnode = collective_dirnode self._upload_readonly_dircap = upload_readonly_dircap self._is_upload_pending = is_upload_pending - + self._umask = umask self._turn_delay = self.REMOTE_SCAN_INTERVAL def start_scanning(self): diff --git a/src/allmydata/test/test_magic_folder.py b/src/allmydata/test/test_magic_folder.py index ede36e18..8a8fb045 100644 --- a/src/allmydata/test/test_magic_folder.py +++ b/src/allmydata/test/test_magic_folder.py @@ -1118,6 +1118,7 @@ class MockTest(MagicFolderTestMixin, unittest.TestCase): pass writefile = TestWriteFileMixin() + writefile._umask = 0123 # create a file with name "foobar" with content "foo" # write downloaded file content "bar" into "foobar" with is_conflict = False