From 336a201d4fed1b800029f302653e851a430a166b Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Thu, 24 Jun 1999 15:27:36 +0000 Subject: 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] --- Lib/urllib.py | 10 ++++++++-- 1 file 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 -- cgit v0.12