summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1999-06-24 15:27:36 (GMT)
committerGuido van Rossum <guido@python.org>1999-06-24 15:27:36 (GMT)
commit336a201d4fed1b800029f302653e851a430a166b (patch)
treef88677e1cfde6a11b0faa839c726d9fafa0098e4 /Lib
parentff3a278d3be871942e8fe14c01a70d03cdac752d (diff)
downloadcpython-336a201d4fed1b800029f302653e851a430a166b.zip
cpython-336a201d4fed1b800029f302653e851a430a166b.tar.gz
cpython-336a201d4fed1b800029f302653e851a430a166b.tar.bz2
Sjoerd Mullender writes:
Urllib makes the URL of the opened file available through the geturl method of the returned object. For local files, this consists of file: plus the name of the file. This results in an invalid URL if the file name was relative. This patch fixes this so that the returned URL is just a relative URL in that case. When the file name is absolute, the URL returned is of the form file:///absolute/path. [I guess that a URL of the form "file:foo.html" is illegal... GvR]
Diffstat (limited to 'Lib')
-rw-r--r--Lib/urllib.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/Lib/urllib.py b/Lib/urllib.py
index 1b5baaa..c12f451 100644
--- a/Lib/urllib.py
+++ b/Lib/urllib.py
@@ -325,13 +325,19 @@ class URLopener:
'Content-Type: %s\n' % (mtype or 'text/plain')))
host, file = splithost(url)
if not host:
+ urlfile = file
+ if file[:1] == '/':
+ urlfile = 'file://' + file
return addinfourl(open(url2pathname(file), 'rb'),
- headers, 'file:'+file)
+ headers, urlfile)
host, port = splitport(host)
if not port \
and socket.gethostbyname(host) in (localhost(), thishost()):
+ urlfile = file
+ if file[:1] == '/':
+ urlfile = 'file://' + file
return addinfourl(open(url2pathname(file), 'rb'),
- headers, 'file:'+file)
+ headers, urlfile)
raise IOError, ('local file error', 'not on local host')
# Use FTP protocol