Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
number of tests, all because of the codecs/_multibytecodecs issue described
here (it's not a Py3K issue, just something Py3K discovers):
http://mail.python.org/pipermail/python-dev/2006-April/064051.html

Hye-Shik Chang promised to look for a fix, so no need to fix it here. The
tests that are expected to break are:

test_codecencodings_cn
test_codecencodings_hk
test_codecencodings_jp
test_codecencodings_kr
test_codecencodings_tw
test_codecs
test_multibytecodec

This merge fixes an actual test failure (test_weakref) in this branch,
though, so I believe merging is the right thing to do anyway.
diff --git a/Lib/urllib.py b/Lib/urllib.py
index 136f42e..d65c0b0 100644
--- a/Lib/urllib.py
+++ b/Lib/urllib.py
@@ -442,9 +442,9 @@
         return addinfourl(fp, noheaders(), "gopher:" + url)
 
     def open_file(self, url):
+        """Use local file or FTP depending on form of URL."""
         if not isinstance(url, str):
             raise IOError, ('file error', 'proxy support for file protocol currently not implemented')
-        """Use local file or FTP depending on form of URL."""
         if url[:2] == '//' and url[2:3] != '/' and url[2:12].lower() != 'localhost/':
             return self.open_ftp(url)
         else:
@@ -1032,7 +1032,7 @@
     global _hostprog
     if _hostprog is None:
         import re
-        _hostprog = re.compile('^//([^/]*)(.*)$')
+        _hostprog = re.compile('^//([^/?]*)(.*)$')
 
     match = _hostprog.match(url)
     if match: return match.group(1, 2)