diff options
author | Fred Drake <fdrake@acm.org> | 2000-09-26 17:23:09 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 2000-09-26 17:23:09 (GMT) |
commit | 0872e0585196a894c8c2c2dbea1a0fdd68391c90 (patch) | |
tree | 6c2a7553349464c5e0d17b23d5c1b6913e234119 | |
parent | 1bac645d8f0d1264ac3b59ad6b4a34c543cf1885 (diff) | |
download | cpython-0872e0585196a894c8c2c2dbea1a0fdd68391c90.zip cpython-0872e0585196a894c8c2c2dbea1a0fdd68391c90.tar.gz cpython-0872e0585196a894c8c2c2dbea1a0fdd68391c90.tar.bz2 |
Fix handling of file inputs on Windows; passing them to urllib.urlopen()
caused the drive letter to cause urlopen() to think it was an unrecognized
URL scheme. This only passes system ids to urlopen() if the file does not
exist. It works on Windows & Unix.
It should work everywhere else as well.
-rw-r--r-- | Lib/xml/sax/saxutils.py | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/Lib/xml/sax/saxutils.py b/Lib/xml/sax/saxutils.py index 3f130f3..a25b41f 100644 --- a/Lib/xml/sax/saxutils.py +++ b/Lib/xml/sax/saxutils.py @@ -198,14 +198,16 @@ def prepare_input_source(source, base = ""): source = xmlreader.InputSource(source) source.setByteStream(f) - if source.getByteStream() == None: + if source.getByteStream() is None: sysid = source.getSystemId() - if urlparse.urlparse(sysid)[0] == '': + if os.path.isfile(sysid): basehead = os.path.split(os.path.normpath(base))[0] source.setSystemId(os.path.join(basehead, sysid)) + f = open(sysid, "rb") else: source.setSystemId(urlparse.urljoin(base, sysid)) + f = urllib.urlopen(source.getSystemId()) - source.setByteStream(urllib.urlopen(source.getSystemId())) + source.setByteStream(f) return source |