From 1af6fb14f343c5afc5692f300e41055937246b04 Mon Sep 17 00:00:00 2001
From: Daira Hopwood <daira@jacaranda.org>
Date: Mon, 31 Aug 2015 18:05:33 +0100
Subject: [PATCH] More precise and correct error reporting in replace_file.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
---
 src/allmydata/util/fileutil.py | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/allmydata/util/fileutil.py b/src/allmydata/util/fileutil.py
index a12565f3..ceb6c6eb 100644
--- a/src/allmydata/util/fileutil.py
+++ b/src/allmydata/util/fileutil.py
@@ -4,7 +4,7 @@ Futz with files like a pro.
 
 import sys, exceptions, os, stat, tempfile, time, binascii
 from collections import namedtuple
-from errno import EEXIST, ENOENT
+from errno import ENOENT
 
 from twisted.python import log
 
@@ -618,12 +618,14 @@ else:
 
         if not os.path.exists(replacement_path):
             raise ConflictError("Replacement file not found: %r" % (replacement_path,))
+
+        try:
+            os.rename(replaced_path, backup_path)
+        except OSError as e:
+            print e, e.errno
+            if e.errno != ENOENT:
+                raise
         try:
-            try:
-                os.rename(replaced_path, backup_path)
-            except OSError as e:
-                if e.errno != errno.EEXIST:
-                    raise
             rename_no_overwrite(replacement_path, replaced_path)
         except EnvironmentError:
             reraise(ConflictError)
-- 
2.45.2