Commit 429203bb authored by Fred Drake's avatar Fred Drake

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.
parent e993889c
......@@ -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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment