On Sat, Mar 31, 2007 at 01:55 +0200, Jakub Narebski wrote: > On Wed, Mar 28, 2007, Martin Koegler wrote: > >> I created a blob with a "strange" filename: &()=!"§$%[<>]*#+_;. >> In the result of the blob view, the " is not escaped in the filename in the header >> and a strange content type is returned: >> >> $ telnet localhost 80 >> Trying 127.0.0.1... >> Connected to localhost. >> Escape character is '^]'. >> GET /gitweb/gitweb.cgi?p=t/.git;a=blob;f=%26()%3D%21%22%A7%24%25%5B%3C%3E%5D%2A%23%2B_%3B.;hb=7bfed2588bee66b33db544830606fa6606478fd9 HTTP/1.0 >> >> HTTP/1.1 200 OK >> Date: Wed, 28 Mar 2007 19:55:36 GMT >> Server: Apache >> Content-disposition: inline; filename="&()=!"§$%[<>]*#+_;." >> Expires: Thu, 29 Mar 2007 19:55:39 GMT >> Connection: close >> Content-Type: application/vnd.mif >> >> xx > > There are two separate things. > > First is not escaped filename in HTTP header. There was some discussion > about this, and even patch by Luben Tuikov which added to_qtext > subroutine to deal with escaping in HTTP (which has diferent rules than > escaping in HTML, or in HTML attributes) > * gitweb: using quotemeta > http://thread.gmane.org/gmane.comp.version-control.git/28050/ > * [PATCH] gitweb: Convert Content-Disposition filenames into qtext > http://thread.gmane.org/gmane.comp.version-control.git/28437 > But the patch was newer accepted; either lost in the noise, or in lack > of summary to the discussion. Junio, do you remember by chance why this patch was dropped? > Second is detecting file as binary (for text files we always return > HTML), and content type set. Gitweb checks mimetype of a file (based > on extension, mainly) by default using /etc/mime.magic, and if it is > neither text/* nor HTML images (png, jpg, gif) it uses "blobdiff_plain" > view. Perhaps instead of just calling git_blob_plain($mimetype) we > should do a redirect (but then how to pass detected mimetype?). It looks > like there is an error with mimetype detection: could you tell me the > line with "application/vnd.mif" in your /etc/mime.types? Unfortunately trying to find the source of this error failed (perhaps due to name of file slightly changed by accident), and I get no errors. WORKSFORME aka SAA#1 (Standard Answer of Admin #1: Works for me). I use the following script to debug errors in gitweb: -- >8 ------------------------------------ #!/bin/sh export GATEWAY_INTERFACE="CGI/1.1" export HTTP_ACCEPT="*/*" export REQUEST_METHOD="GET" export QUERY_STRING=""$1"" export PATH_INFO=""$2"" ddd "/var/www/cgi-bin/gitweb/gitweb.cgi" -- >8 ------------------------------------ -- Jakub Narebski Poland - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html