New code for split() by Tim Peters, behaves more like posixpath.split().
diff --git a/Lib/dospath.py b/Lib/dospath.py
index d7aa752..bd5e560 100644
--- a/Lib/dospath.py
+++ b/Lib/dospath.py
@@ -54,31 +54,23 @@
 
 
 # Split a path in head (everything up to the last '/') and tail (the
-# rest).  If the original path ends in '/' but is not the root, this
-# '/' is stripped.  After the trailing '/' is stripped, the invariant
+# rest).  After the trailing '/' is stripped, the invariant
 # join(head, tail) == p holds.
 # The resulting head won't end in '/' unless it is the root.
 
 def split(p):
-	d, p = splitdrive(p)
-	slashes = ''
-	while p and p[-1:] in '/\\':
-		slashes = slashes + p[-1]
-		p = p[:-1]
-	if p == '':
-		p = p + slashes
-	head, tail = '', ''
-	for c in p:
-		tail = tail + c
-		if c in '/\\':
-			head, tail = head + tail, ''
-	slashes = ''
-	while head and head[-1:] in '/\\':
-		slashes = slashes + head[-1]
-		head = head[:-1]
-	if head == '':
-		head = head + slashes
-	return d + head, tail
+    d, p = splitdrive(p)
+    # set i to index beyond p's last slash
+    i = len(p)
+    while i and p[i-1] not in '/\\':
+        i = i - 1
+    head, tail = p[:i], p[i:]  # now tail has no slashes
+    # remove trailing slashes from head, unless it's all slashes
+    head2 = head
+    while head2 and head2[-1] in '/\\':
+        head2 = head2[:-1]
+    head = head2 or head
+    return d + head, tail
 
 
 # Split a path in root and extension.