From 8e9df0624121c01d6c54234b5b8608f90907c0c5 Mon Sep 17 00:00:00 2001 From: Daira Hopwood Date: Tue, 15 Sep 2015 18:39:54 +0100 Subject: [PATCH] Make _write_downloaded_file return the path of the destination file. Signed-off-by: Daira Hopwood --- src/allmydata/frontends/magic_folder.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/allmydata/frontends/magic_folder.py b/src/allmydata/frontends/magic_folder.py index 44def8c9..c654bca5 100644 --- a/src/allmydata/frontends/magic_folder.py +++ b/src/allmydata/frontends/magic_folder.py @@ -560,6 +560,8 @@ class Downloader(QueueMixin): # 4. Perform a file replacement with backup filename foo.backup, # replaced file foo, and replacement file .foo.tmp. If any step of # this operation fails, reclassify as a conflict and stop. + # + # Returns the path of the destination file. precondition(isinstance(path, unicode), path=path) path = fileutil.abspath_expanduser_unicode(path, base=base) @@ -571,17 +573,16 @@ class Downloader(QueueMixin): fileutil.write(replacement_path, file_contents) os.utime(replacement_path, (now, now - cls.FUDGE_SECONDS)) if is_conflict: - cls._rename_conflicted_file(path, replacement_path) + return cls._rename_conflicted_file(path, replacement_path) else: try: fileutil.replace_file(path, replacement_path, backup_path) + return path except fileutil.ConflictError: - is_conflict = True - cls._rename_conflicted_file(path, replacement_path) - if is_conflict: - raise ConflictError("Conflict detected...") + return cls._rename_conflicted_file(path, replacement_path) @classmethod def _rename_conflicted_file(self, path, replacement_path): conflict_path = path + u".conflict" fileutil.rename_no_overwrite(replacement_path, conflict_path) + return conflict_path -- 2.45.2