summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Gijsbers <jlg@dds.nl>2004-08-21 10:43:29 (GMT)
committerJohannes Gijsbers <jlg@dds.nl>2004-08-21 10:43:29 (GMT)
commit6d63a8dd09a3be6b5afd7a327bf86bca6be6ff0d (patch)
tree026699bbfb559836bbacf0be8d2aca72ca1c381d
parent037b3ee44e7de00b4653d73d4808c0f679a909a7 (diff)
downloadcpython-6d63a8dd09a3be6b5afd7a327bf86bca6be6ff0d.zip
cpython-6d63a8dd09a3be6b5afd7a327bf86bca6be6ff0d.tar.gz
cpython-6d63a8dd09a3be6b5afd7a327bf86bca6be6ff0d.tar.bz2
Patch #1011123: Use urllib.quote() instead of cgi.escape() for encoding the
href attribute in list_directory(). This fixes the links for legal Unix filenames such as 'a"b'.
-rw-r--r--Lib/SimpleHTTPServer.py5
1 files changed, 3 insertions, 2 deletions
diff --git a/Lib/SimpleHTTPServer.py b/Lib/SimpleHTTPServer.py
index d58f52f..93662ab 100644
--- a/Lib/SimpleHTTPServer.py
+++ b/Lib/SimpleHTTPServer.py
@@ -105,7 +105,7 @@ class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
f.write("<hr>\n<ul>\n")
for name in list:
fullname = os.path.join(path, name)
- displayname = linkname = name = cgi.escape(name)
+ displayname = linkname = name
# Append / for directories or @ for symbolic links
if os.path.isdir(fullname):
displayname = name + "/"
@@ -113,7 +113,8 @@ class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
if os.path.islink(fullname):
displayname = name + "@"
# Note: a link to a directory displays with @ and links with /
- f.write('<li><a href="%s">%s</a>\n' % (linkname, displayname))
+ f.write('<li><a href="%s">%s</a>\n'
+ % (urllib.quote(linkname), cgi.escape(displayname)))
f.write("</ul>\n<hr>\n")
length = f.tell()
f.seek(0)