From a0aea06a9edf6c76c2b340758420df768ce76e23 Mon Sep 17 00:00:00 2001
From: Brian Warner <warner@allmydata.com>
Date: Tue, 24 Feb 2009 17:55:22 -0700
Subject: [PATCH] scripts/common: on windows, tolerate paths like
 'c:\dir\file.txt', by treating single-letter aliases on windows/cygwin as
 non-aliases

---
 src/allmydata/scripts/common.py | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/allmydata/scripts/common.py b/src/allmydata/scripts/common.py
index 8518c6a0..c06f7a10 100644
--- a/src/allmydata/scripts/common.py
+++ b/src/allmydata/scripts/common.py
@@ -116,6 +116,14 @@ def get_aliases(nodedir):
 class DefaultAliasMarker:
     pass
 
+pretend_platform_uses_lettercolon = False # for tests
+def platform_uses_lettercolon_drivename():
+    if ("win32" in sys.platform.lower()
+        or "cygwin" in sys.platform.lower()
+        or pretend_platform_uses_lettercolon):
+        return True
+    return False
+
 def get_alias(aliases, path, default):
     # transform "work:path/filename" into (aliases["work"], "path/filename").
     # If default=None, then an empty alias is indicated by returning
@@ -135,6 +143,10 @@ def get_alias(aliases, path, default):
         if default == None:
             return DefaultAliasMarker, path
         return aliases[default], path
+    if colon == 1 and platform_uses_lettercolon_drivename():
+        # treat C:\why\must\windows\be\so\weird as a local path, not a tahoe
+        # file in the "C:" alias
+        return DefaultAliasMarker, path
     alias = path[:colon]
     if "/" in alias:
         # no alias, but there's a colon in a dirname/filename, like
-- 
2.45.2