Fuck.  For PC support, this must be in the distribution.
diff --git a/Lib/dos-8x3/macurl2p.py b/Lib/dos-8x3/macurl2p.py
new file mode 100755
index 0000000..65afe69
--- /dev/null
+++ b/Lib/dos-8x3/macurl2p.py
@@ -0,0 +1,76 @@
+"""Mac specific module for conversion between pathnames and URLs."""
+
+import string
+import urllib
+import os
+
+def url2pathname(pathname):
+    "Convert /-delimited pathname to mac pathname"
+    #
+    # XXXX The .. handling should be fixed...
+    #
+    tp = urllib.splittype(pathname)[0]
+    if tp and tp <> 'file':
+	raise RuntimeError, 'Cannot convert non-local URL to pathname'
+    components = string.split(pathname, '/')
+    # Remove . and embedded ..
+    i = 0
+    while i < len(components):
+	if components[i] == '.':
+	    del components[i]
+	elif components[i] == '..' and i > 0 and \
+				  components[i-1] not in ('', '..'):
+	    del components[i-1:i+1]
+	    i = i-1
+	elif components[i] == '' and i > 0 and components[i-1] <> '':
+	    del components[i]
+	else:
+	    i = i+1
+    if not components[0]:
+	# Absolute unix path, don't start with colon
+	return string.join(components[1:], ':')
+    else:
+	# relative unix path, start with colon. First replace
+	# leading .. by empty strings (giving ::file)
+	i = 0
+	while i < len(components) and components[i] == '..':
+	    components[i] = ''
+	    i = i + 1
+	return ':' + string.join(components, ':')
+
+def pathname2url(pathname):
+    "convert mac pathname to /-delimited pathname"
+    if '/' in pathname:
+	raise RuntimeError, "Cannot convert pathname containing slashes"
+    components = string.split(pathname, ':')
+    # Replace empty string ('::') by .. (will result in '/../' later)
+    for i in range(1, len(components)):
+	if components[i] == '':
+	    components[i] = '..'
+    # Truncate names longer than 31 bytes
+    components = map(lambda x: x[:31], components)
+
+    if os.path.isabs(pathname):
+	return '/' + string.join(components, '/')
+    else:
+	return string.join(components, '/')
+
+def test():
+    for url in ["index.html",
+		"bar/index.html",
+		"/foo/bar/index.html",
+		"/foo/bar/",
+		"/"]:
+	print `url`, '->', `url2pathname(url)`
+    for path in ["drive:",
+		 "drive:dir:",
+		 "drive:dir:file",
+		 "drive:file",
+		 "file",
+		 ":file",
+		 ":dir:",
+		 ":dir:file"]:
+	print `path`, '->', `pathname2url(path)`
+
+if __name__ == '__main__':
+    test()