hgweb: Pass only filename instead of full path when downloading raw files.
Before this patch "filename=foo/bar" was sent and e.g. Firefox offered to save
the file as "foo-bar" instead of just "bar".
--- a/mercurial/hgweb/request.py Sat Feb 16 13:34:11 2008 +0100
+++ b/mercurial/hgweb/request.py Sat Feb 16 17:51:30 2008 +0100
@@ -85,8 +85,8 @@
if type is not None:
headers.append(('Content-Type', type))
if filename:
- headers.append(('Content-Disposition', 'inline; filename=%s' %
- filename))
+ headers.append(('Content-Disposition',
+ 'inline; filename=%s' % filename.split('/')[-1]))
if length:
headers.append(('Content-Length', str(length)))
self.header(headers)
--- a/tests/test-webraw Sat Feb 16 13:34:11 2008 +0100
+++ b/tests/test-webraw Sat Feb 16 17:51:30 2008 +0100
@@ -2,17 +2,18 @@
hg init test
cd test
-cat >sometext.txt <<ENDSOME
+mkdir sub
+cat >sub/sometext.txt <<ENDSOME
This is just some random text
that will go inside the file and take a few lines.
It is very boring to read, but computers don't
care about things like that.
ENDSOME
-hg add sometext.txt
+hg add sub/sometext.txt
hg commit -d "1 0" -m "Just some text"
hg serve -p $HGPORT -A access.log -E error.log -d --pid-file=hg.pid
cat hg.pid >> $DAEMON_PIDS
-("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/?f=f165dc289438;file=sometext.txt;style=raw' content-type content-length content-disposition) >getoutput.txt &
+("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/?f=37afcac6d393;file=sub/sometext.txt;style=raw' content-type content-length content-disposition) >getoutput.txt &
sleep 5
kill `cat hg.pid`
--- a/tests/test-webraw.out Sat Feb 16 13:34:11 2008 +0100
+++ b/tests/test-webraw.out Sat Feb 16 17:51:30 2008 +0100
@@ -7,4 +7,4 @@
that will go inside the file and take a few lines.
It is very boring to read, but computers don't
care about things like that.
-host - - [date] "GET /?f=f165dc289438;file=sometext.txt;style=raw HTTP/1.1" 200 -
+host - - [date] "GET /?f=37afcac6d393;file=sub/sometext.txt;style=raw HTTP/1.1" 200 -