diff --git a/Lib/urllib.py b/Lib/urllib.py
index f036078..82a39f2 100644
--- a/Lib/urllib.py
+++ b/Lib/urllib.py
@@ -24,56 +24,7 @@
 
 # Helper for non-unix systems
 if os.name == 'mac':
-	def url2pathname(pathname):
-		"Convert /-delimited pathname to mac pathname"
-		#
-		# XXXX The .. handling should be fixed...
-		#
-		tp = 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, '/')
+	from macurl2path import url2pathname, pathname2url
 else:
 	def url2pathname(pathname):
 		return pathname
