Whitespace normalization.
diff --git a/Lib/StringIO.py b/Lib/StringIO.py
index 6422f76..4739d13 100644
--- a/Lib/StringIO.py
+++ b/Lib/StringIO.py
@@ -142,7 +142,7 @@
         return lines
 
     def truncate(self, size=None):
-        _complain_ifclosed(self.closed) 
+        _complain_ifclosed(self.closed)
         if size is None:
             size = self.pos
         elif size < 0:
diff --git a/Lib/_strptime.py b/Lib/_strptime.py
index df04674..e93d146 100644
--- a/Lib/_strptime.py
+++ b/Lib/_strptime.py
@@ -365,7 +365,7 @@
                     # be able to tell what timezone has daylight savings
                     if time.tzname[0] == time.tzname[1] and \
                        time.daylight:
-                            break
+                        break
                     else:
                         tz = value
                         break
diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py
index 0c37768..7fff422 100644
--- a/Lib/distutils/command/build_ext.py
+++ b/Lib/distutils/command/build_ext.py
@@ -171,7 +171,8 @@
             # Append the source distribution include and library directories,
             # this allows distutils on windows to work in the source tree
             self.include_dirs.append(os.path.join(sys.exec_prefix, 'PC'))
-            self.library_dirs.append(os.path.join(sys.exec_prefix, 'PCBuild'))
+            self.library_dirs.append(os.path.join(sys.exec_prefix, 'PC', 'VC6'))
+            #self.library_dirs.append(os.path.join(sys.exec_prefix, 'PCBuild'))
 
         # OS/2 (EMX) doesn't support Debug vs Release builds, but has the 
         # import libraries in its "Config" subdirectory
diff --git a/Lib/httplib.py b/Lib/httplib.py
index 0dfea33..a23caf5 100644
--- a/Lib/httplib.py
+++ b/Lib/httplib.py
@@ -610,7 +610,7 @@
         if self.__response and self.__response.isclosed():
             self.__response = None
 
-       
+
         # in certain cases, we cannot issue another request on this connection.
         # this occurs when:
         #   1) we are in the process of sending a request.   (_CS_REQ_STARTED)
@@ -731,7 +731,7 @@
         # If headers already contains a host header, then define the
         # optional skip_host argument to putrequest().  The check is
         # harder because field names are case insensitive.
-        if 'host' in [k.lower() for k in headers]:                
+        if 'host' in [k.lower() for k in headers]:
             self.putrequest(method, url, skip_host=1)
         else:
             self.putrequest(method, url)
diff --git a/Lib/random.py b/Lib/random.py
index 1f279bb..a2415ae 100644
--- a/Lib/random.py
+++ b/Lib/random.py
@@ -177,7 +177,7 @@
             # compatibility).
 
             if width >= maxwidth:
-                    return int(istart + self._randbelow(width))
+                return int(istart + self._randbelow(width))
             return int(istart + int(self.random()*width))
         if step == 1:
             raise ValueError, "empty range for randrange() (%d,%d, %d)" % (istart, istop, width)
diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py
index fe5d143..9482bf8 100644
--- a/Lib/sre_parse.py
+++ b/Lib/sre_parse.py
@@ -365,9 +365,9 @@
     return subpattern
 
 def _parse_sub_cond(source, state, condgroup):
-    item_yes = _parse(source, state) 
+    item_yes = _parse(source, state)
     if source.match("|"):
-        item_no = _parse(source, state) 
+        item_no = _parse(source, state)
         if source.match("|"):
             raise error, "conditional backref with more than two branches"
     else:
diff --git a/Lib/test/pystone.py b/Lib/test/pystone.py
index 168c399..0a25981 100755
--- a/Lib/test/pystone.py
+++ b/Lib/test/pystone.py
@@ -264,4 +264,3 @@
     else:
         loops = LOOPS
     main(loops)
-
diff --git a/Lib/test/test_applesingle.py b/Lib/test/test_applesingle.py
index eeb01c5..2a2d60a 100644
--- a/Lib/test/test_applesingle.py
+++ b/Lib/test/test_applesingle.py
@@ -55,7 +55,7 @@
         applesingle.decode(test_support.TESTFN, TESTFN2)
         self.compareData(False, dataforkdata)
         self.compareData(True, resourceforkdata)
-        
+
     def test_applesingle_resonly(self):
         try:
             os.unlink(TESTFN2)
diff --git a/Lib/test/test_codeccallbacks.py b/Lib/test/test_codeccallbacks.py
index 289e838..ac561cc 100644
--- a/Lib/test/test_codeccallbacks.py
+++ b/Lib/test/test_codeccallbacks.py
@@ -697,7 +697,7 @@
             ord(">"): u"&gt;",
             ord('"'): u"&quot;",
         }
-        
+
         for n in (1, 10, 100, 1000):
             text = u'abc<def>ghi'*n
             text.translate(charmap)
diff --git a/Lib/test/test_codecencodings_cn.py b/Lib/test/test_codecencodings_cn.py
index 3960c9c..269e00a 100644
--- a/Lib/test/test_codecencodings_cn.py
+++ b/Lib/test/test_codecencodings_cn.py
@@ -27,8 +27,8 @@
     tstring = test_multibytecodec_support.load_teststring('gbk')
     codectests = (
         # invalid bytes
-        ("abc\x80\x80\xc1\xc4", "strict",  None),  
-        ("abc\xc8", "strict",  None),  
+        ("abc\x80\x80\xc1\xc4", "strict",  None),
+        ("abc\xc8", "strict",  None),
         ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\u804a"),
         ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\u804a\ufffd"),
         ("abc\x80\x80\xc1\xc4", "ignore",  u"abc\u804a"),
@@ -58,4 +58,3 @@
 
 if __name__ == "__main__":
     test_main()
-
diff --git a/Lib/test/test_codecencodings_jp.py b/Lib/test/test_codecencodings_jp.py
index 264b6b9..f574511 100644
--- a/Lib/test/test_codecencodings_jp.py
+++ b/Lib/test/test_codecencodings_jp.py
@@ -131,4 +131,3 @@
 
 if __name__ == "__main__":
     test_main()
-
diff --git a/Lib/test/test_codecencodings_kr.py b/Lib/test/test_codecencodings_kr.py
index 17615ba..449237d 100644
--- a/Lib/test/test_codecencodings_kr.py
+++ b/Lib/test/test_codecencodings_kr.py
@@ -54,4 +54,3 @@
 
 if __name__ == "__main__":
     test_main()
-
diff --git a/Lib/test/test_codecencodings_tw.py b/Lib/test/test_codecencodings_tw.py
index 3e2fa8b..897f060 100644
--- a/Lib/test/test_codecencodings_tw.py
+++ b/Lib/test/test_codecencodings_tw.py
@@ -28,4 +28,3 @@
 
 if __name__ == "__main__":
     test_main()
-
diff --git a/Lib/test/test_codecmaps_cn.py b/Lib/test/test_codecmaps_cn.py
index 919c81b..337ac91 100644
--- a/Lib/test/test_codecmaps_cn.py
+++ b/Lib/test/test_codecmaps_cn.py
@@ -31,4 +31,3 @@
 test_multibytecodec_support.register_skip_expected(TestGB2312Map, TestGBKMap)
 if __name__ == "__main__":
     test_main()
-
diff --git a/Lib/test/test_codecmaps_jp.py b/Lib/test/test_codecmaps_jp.py
index ef49178..9519da2 100644
--- a/Lib/test/test_codecmaps_jp.py
+++ b/Lib/test/test_codecmaps_jp.py
@@ -87,4 +87,3 @@
     TestSJISX0213Map)
 if __name__ == "__main__":
     test_main()
-
diff --git a/Lib/test/test_codecmaps_kr.py b/Lib/test/test_codecmaps_kr.py
index 910396e..9a71939 100644
--- a/Lib/test/test_codecmaps_kr.py
+++ b/Lib/test/test_codecmaps_kr.py
@@ -48,4 +48,3 @@
     TestEUCKRMap, TestJOHABMap)
 if __name__ == "__main__":
     test_main()
-
diff --git a/Lib/test/test_codecmaps_tw.py b/Lib/test/test_codecmaps_tw.py
index 9b28fef..2f41660 100644
--- a/Lib/test/test_codecmaps_tw.py
+++ b/Lib/test/test_codecmaps_tw.py
@@ -36,4 +36,3 @@
 test_multibytecodec_support.register_skip_expected(TestBIG5Map, TestCP950Map)
 if __name__ == "__main__":
     test_main()
-
diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py
index 10ebe09..2065ef2 100644
--- a/Lib/test/test_curses.py
+++ b/Lib/test/test_curses.py
@@ -204,7 +204,7 @@
                          ]:
         if ascii.unctrl(ch) != expected:
             print 'curses.unctrl fails on character', repr(ch)
-            
+
 
 
 def main(stdscr):
@@ -215,7 +215,7 @@
     finally:
         curses.resetty()
 
-    
+
 if __name__ == '__main__':
     curses.wrapper(main)
     unit_tests()
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index e001562..d0500e6 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -3966,7 +3966,7 @@
     # this makes a crash more likely:
     import gc; gc.collect()
     vereq(hasattr(c, 'attr'), False)
-    
+
 
 def test_main():
     weakref_segfault() # Must be first, somehow
diff --git a/Lib/test/test_difflib.py b/Lib/test/test_difflib.py
index 3879967..1703754 100644
--- a/Lib/test/test_difflib.py
+++ b/Lib/test/test_difflib.py
@@ -15,4 +15,3 @@
 Doctests = doctest.DocTestSuite(difflib)
 
 test_support.run_unittest(TestSFbugs, Doctests)
-
diff --git a/Lib/test/test_marshal.py b/Lib/test/test_marshal.py
index ad45c29..f971d11 100644
--- a/Lib/test/test_marshal.py
+++ b/Lib/test/test_marshal.py
@@ -55,7 +55,7 @@
             new = marshal.load(file(test_support.TESTFN, "rb"))
             self.assertEqual(b, new)
             self.assertEqual(type(b), type(new))
-            
+
 class FloatTestCase(unittest.TestCase):
     def test_floats(self):
         # Test a few floats
@@ -122,7 +122,7 @@
             marshal.load(file(test_support.TESTFN, "rb"))
             self.assertEqual(s, new)
         os.unlink(test_support.TESTFN)
-            
+
 class ExceptionTestCase(unittest.TestCase):
     def test_exceptions(self):
         new = marshal.loads(marshal.dumps(StopIteration))
@@ -151,7 +151,7 @@
         marshal.load(file(test_support.TESTFN, "rb"))
         self.assertEqual(self.d, new)
         os.unlink(test_support.TESTFN)
-        
+
     def test_list(self):
         lst = self.d.items()
         new = marshal.loads(marshal.dumps(lst))
@@ -169,7 +169,7 @@
         marshal.load(file(test_support.TESTFN, "rb"))
         self.assertEqual(t, new)
         os.unlink(test_support.TESTFN)
-        
+
 class BugsTestCase(unittest.TestCase):
     def test_bug_5888452(self):
         # Simple-minded check for SF 588452: Debug build crashes
diff --git a/Lib/test/test_md5.py b/Lib/test/test_md5.py
index bd0fb2e..1f08568 100644
--- a/Lib/test/test_md5.py
+++ b/Lib/test/test_md5.py
@@ -26,9 +26,9 @@
         eq('abc', '900150983cd24fb0d6963f7d28e17f72')
         eq('message digest', 'f96b697d7cb7938d525a2f31aaf161d0')
         eq('abcdefghijklmnopqrstuvwxyz', 'c3fcd3d76192e4007dfb496cca67e13b')
-        eq('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 
+        eq('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
            'd174ab98d277d9f5a5611c2c9f419d9f')
-        eq('12345678901234567890123456789012345678901234567890123456789012345678901234567890', 
+        eq('12345678901234567890123456789012345678901234567890123456789012345678901234567890',
            '57edf4a22be3c955ac49da2e2107b67a')
 
     def test_hexdigest(self):
diff --git a/Lib/test/test_multibytecodec.py b/Lib/test/test_multibytecodec.py
index f686b70..c77898b 100644
--- a/Lib/test/test_multibytecodec.py
+++ b/Lib/test/test_multibytecodec.py
@@ -76,4 +76,3 @@
 
 if __name__ == "__main__":
     test_main()
-
diff --git a/Lib/test/test_multibytecodec_support.py b/Lib/test/test_multibytecodec_support.py
index 6185243..77033cd 100644
--- a/Lib/test/test_multibytecodec_support.py
+++ b/Lib/test/test_multibytecodec_support.py
@@ -230,4 +230,3 @@
             break
     else:
         sys.modules[case.__module__].skip_expected = False
-
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index 221571a..db8d99e 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -319,10 +319,10 @@
         path = os.path.join(base, 'dir1', os.curdir, 'dir2', 'dir3', 'dir4',
                             'dir5', 'dir6')
         os.makedirs(path)
-        
 
-    
-        
+
+
+
     def tearDown(self):
         path = os.path.join(test_support.TESTFN, 'dir1', 'dir2', 'dir3',
                             'dir4', 'dir5', 'dir6')
diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py
index d2e2753..6ceab6d 100644
--- a/Lib/test/test_re.py
+++ b/Lib/test/test_re.py
@@ -405,7 +405,7 @@
                          20003)
         self.assertEqual(re.match('.*?cd', 20000*'abc'+'de').end(0), 60001)
         # non-simple '*?' still used to hit the recursion limit, before the
-        # non-recursive scheme was implemented. 
+        # non-recursive scheme was implemented.
         self.assertEqual(re.search('(a|b)*?c', 10000*'ab'+'cd').end(0), 20001)
 
     def test_bug_612074(self):
diff --git a/Lib/test/test_set.py b/Lib/test/test_set.py
index 2104ee9..3b108a1 100644
--- a/Lib/test/test_set.py
+++ b/Lib/test/test_set.py
@@ -179,7 +179,7 @@
             def __init__(self, value):
                 self.value = value
             def __hash__(self):
-                    return self.value
+                return self.value
             def __deepcopy__(self, memo=None):
                 return Tracer(self.value + 1)
         t = Tracer(10)
diff --git a/Lib/test/test_sort.py b/Lib/test/test_sort.py
index dedc41c..5d670a8 100644
--- a/Lib/test/test_sort.py
+++ b/Lib/test/test_sort.py
@@ -270,5 +270,3 @@
 
 if __name__ == "__main__":
     test_main(verbose=True)
-
-
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 6a0b0d8..485e9e0 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -141,7 +141,7 @@
         # which have special Unicode support in posixmodule.
         if (not hasattr(sys, "getwindowsversion") or
                 sys.getwindowsversion()[3] < 2): #  0=win32s or 1=9x/ME
-           TESTFN_UNICODE_UNENCODEABLE = None
+            TESTFN_UNICODE_UNENCODEABLE = None
         else:
             # Japanese characters (I think - from bug 846133)
             TESTFN_UNICODE_UNENCODEABLE = u"@test-\u5171\u6709\u3055\u308c\u308b"
diff --git a/Lib/test/test_unicode_file.py b/Lib/test/test_unicode_file.py
index fbca88b..46a99f2 100644
--- a/Lib/test/test_unicode_file.py
+++ b/Lib/test/test_unicode_file.py
@@ -20,7 +20,7 @@
 class TestUnicodeFiles(unittest.TestCase):
     # The 'do_' functions are the actual tests.  They generally assume the
     # file already exists etc.
-    
+
     # Do all the tests we can given only a single filename.  The file should
     # exist.
     def _do_single(self, filename):
@@ -39,7 +39,7 @@
         # basename should appear in listdir.
         path, base = os.path.split(os.path.abspath(filename))
         self.failUnless(base in os.listdir(path))
-    
+
     # Do as many "equivalancy' tests as we can - ie, check that although we
     # have different types for the filename, they refer to the same file.
     def _do_equivilent(self, filename1, filename2):
@@ -124,7 +124,7 @@
             self._do_single(filename)
         finally:
             os.unlink(filename)
-    
+
     def _test_equivalent(self, filename1, filename2):
         remove_if_exists(filename1)
         self.failUnless(not os.path.exists(filename2))
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py
index 6438b4e..87de229 100644
--- a/Lib/test/test_urllib2.py
+++ b/Lib/test/test_urllib2.py
@@ -269,6 +269,14 @@
                              isinstance(args[1], MockResponse))
 
 
+def sanepathname2url(path):
+    import urllib
+    urlpath = urllib.pathname2url(path)
+    if os.name == "nt" and urlpath.startswith("///"):
+        urlpath = urlpath[2:]
+    # XXX don't ask me about the mac...
+    return urlpath
+
 class HandlerTests(unittest.TestCase):
 
     def test_ftp(self):
@@ -323,19 +331,17 @@
         h = urllib2.FileHandler()
         o = h.parent = MockOpener()
 
-        #from test_support import TESTFN
-        TESTFN = "test.txt"
+        TESTFN = test_support.TESTFN
+        urlpath = sanepathname2url(os.path.abspath(TESTFN))
         towrite = "hello, world\n"
         for url in [
-            "file://localhost%s/%s" % (os.getcwd(), TESTFN),
-            "file://%s/%s" % (os.getcwd(), TESTFN),
-            "file://%s%s/%s" % (socket.gethostbyname('localhost'),
-                                os.getcwd(), TESTFN),
-            "file://%s%s/%s" % (socket.gethostbyname(socket.gethostname()),
-                                os.getcwd(), TESTFN),
-            # XXX Windows / Mac format(s), ... ?
+            "file://localhost%s" % urlpath,
+            "file://%s" % urlpath,
+            "file://%s%s" % (socket.gethostbyname('localhost'), urlpath),
+            "file://%s%s" % (socket.gethostbyname(socket.gethostname()),
+                             urlpath),
             ]:
-            f = open(TESTFN, "w")
+            f = open(TESTFN, "wb")
             try:
                 try:
                     f.write(towrite)
@@ -345,25 +351,21 @@
                 r = h.file_open(Request(url))
                 try:
                     data = r.read()
-                    read_time = time.time()
                     headers = r.info()
                     newurl = r.geturl()
                 finally:
                     r.close()
+                stats = os.stat(TESTFN)
+                modified = rfc822.formatdate(stats.st_mtime)
             finally:
                 os.remove(TESTFN)
             self.assertEqual(data, towrite)
             self.assertEqual(headers["Content-type"], "text/plain")
             self.assertEqual(headers["Content-length"], "13")
-            # Fudge Last-modified string comparison by one second to
-            # prevent spurious failure on crossing a second boundary while
-            # executing this test.
-            unfudged = rfc822.formatdate(read_time)
-            fudged = rfc822.formatdate(read_time-1)
-            self.assert_(headers["Last-modified"] in [unfudged, fudged])
+            self.assertEqual(headers["Last-modified"], modified)
 
         for url in [
-            "file://localhost:80%s/%s" % (os.getcwd(), TESTFN),
+            "file://localhost:80%s" % urlpath,
 # XXXX bug: these fail with socket.gaierror, should be URLError
 ##             "file://%s:80%s/%s" % (socket.gethostbyname('localhost'),
 ##                                    os.getcwd(), TESTFN),
@@ -371,7 +373,7 @@
 ##             (os.getcwd(), TESTFN),
             ]:
             try:
-                f = open(TESTFN, "w")
+                f = open(TESTFN, "wb")
                 try:
                     f.write(towrite)
                 finally:
diff --git a/Lib/traceback.py b/Lib/traceback.py
index d99009b..cf78648 100644
--- a/Lib/traceback.py
+++ b/Lib/traceback.py
@@ -219,7 +219,7 @@
         return ''.join(format_exception(etype, value, tb, limit))
     finally:
         etype = value = tb = None
-    
+
 
 def print_last(limit=None, file=None):
     """This is a shorthand for 'print_exception(sys.last_type,
diff --git a/Lib/urllib2.py b/Lib/urllib2.py
index 923b4e4..43e9c7d 100644
--- a/Lib/urllib2.py
+++ b/Lib/urllib2.py
@@ -426,11 +426,11 @@
 
     def add_parent(self, parent):
         self.parent = parent
-        
+
     def close(self):
         # Only exists for backwards compatibility
         pass
-        
+
     def __lt__(self, other):
         if not hasattr(other, "handler_order"):
             # Try to preserve the old behavior of having custom classes
@@ -770,7 +770,7 @@
             # prompting for the information. Crap. This isn't great
             # but it's better than the current 'repeat until recursion
             # depth exceeded' approach <wink>
-            raise HTTPError(req.get_full_url(), 401, "digest auth failed", 
+            raise HTTPError(req.get_full_url(), 401, "digest auth failed",
                             headers, None)
         else:
             self.retried += 1
@@ -845,7 +845,7 @@
         else:
             # XXX handle auth-int.
             pass
-    
+
         # XXX should the partial digests be encoded too?
 
         base = 'username="%s", realm="%s", nonce="%s", uri="%s", ' \
@@ -887,7 +887,7 @@
 
     def http_error_401(self, req, fp, code, msg, headers):
         host = urlparse.urlparse(req.get_full_url())[1]
-        retry = self.http_error_auth_reqed('www-authenticate', 
+        retry = self.http_error_auth_reqed('www-authenticate',
                                            host, req, headers)
         self.reset_retry_count()
         return retry
@@ -899,7 +899,7 @@
 
     def http_error_407(self, req, fp, code, msg, headers):
         host = req.get_host()
-        retry = self.http_error_auth_reqed('proxy-authenticate', 
+        retry = self.http_error_auth_reqed('proxy-authenticate',
                                            host, req, headers)
         self.reset_retry_count()
         return retry
@@ -964,7 +964,7 @@
             raise URLError(err)
 
         # Pick apart the HTTPResponse object to get the various pieces
-        # of the 
+        # of the
         resp = addinfourl(r.fp, r.msg, req.get_full_url())
         resp.code = r.status
         resp.msg = r.reason