From: Guido van Rossum Date: Thu, 24 Jun 1999 15:27:36 +0000 (+0000) Subject: Sjoerd Mullender writes: X-Git-Tag: v1.6a1~1160 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=336a201d4fed1b800029f302653e851a430a166b;p=thirdparty%2FPython%2Fcpython.git 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] --- diff --git a/Lib/urllib.py b/Lib/urllib.py index 1b5baaaf95f1..c12f4519cca6 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