Strip any long path marker in the input to flush_volume.
authorDaira Hopwood <daira@jacaranda.org>
Tue, 27 Oct 2015 21:39:05 +0000 (21:39 +0000)
committerDaira Hopwood <daira@jacaranda.org>
Tue, 27 Oct 2015 21:39:05 +0000 (21:39 +0000)
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
src/allmydata/util/fileutil.py

index 857d3ebc12dce4fc96a7129dc74b34d03f416880..1d059fcce883e9cba523f384930d2b07d5357b3d 100644 (file)
@@ -546,8 +546,12 @@ if sys.platform == "win32":
 
     # <http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/4465cafb-f4ed-434f-89d8-c85ced6ffaa8/>
     def flush_volume(path):
-        drive = os.path.splitdrive(os.path.realpath(path))[0]
+        abspath = os.path.realpath(path)
+        if abspath.startswith("\\\\?\\"):
+            abspath = abspath[4 :]
+        drive = os.path.splitdrive(abspath)[0]
 
+        print "flushing %r" % (drive,)
         hVolume = CreateFileW(u"\\\\.\\" + drive,
                               GENERIC_WRITE,
                               FILE_SHARE_READ | FILE_SHARE_WRITE,