From: Joey Hess Date: Wed, 16 Jun 2010 17:23:32 +0000 (-0400) Subject: attachment: Support Windows paths when taking basename of client-supplied file name. X-Git-Tag: 3.20100623~49 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=69c22fa1ea143e3eb36692e087b167ae2171581e;p=ikiwiki.git attachment: Support Windows paths when taking basename of client-supplied file name. --- diff --git a/IkiWiki/Plugin/attachment.pm b/IkiWiki/Plugin/attachment.pm index 9c774557f..ce688ca40 100644 --- a/IkiWiki/Plugin/attachment.pm +++ b/IkiWiki/Plugin/attachment.pm @@ -134,9 +134,12 @@ sub formbuilder (@) { } } + $filename=IkiWiki::basename($filename); + $filename=~s/.*\\+(.+)/$1/; # hello, windows + $filename=linkpage(IkiWiki::possibly_foolish_untaint( attachment_location($form->field('page')). - IkiWiki::basename($filename))); + $filename)); if (IkiWiki::file_pruned($filename)) { error(gettext("bad attachment filename")); } diff --git a/debian/changelog b/debian/changelog index aeb9dc0eb..1f350912e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -20,6 +20,8 @@ ikiwiki (3.20100611) UNRELEASED; urgency=low (Workaround bug #586045) * Make --gettime be honored after initial setup. * git: Gix --gettime to properly support utf8 filenames. + * attachment: Support Windows paths when taking basename of client-supplied + file name. -- Joey Hess Fri, 11 Jun 2010 13:39:15 -0400 diff --git a/doc/bugs/attachment_upload_does_not_work_for_windows_clients.mdwn b/doc/bugs/attachment_upload_does_not_work_for_windows_clients.mdwn index de57a1441..ad3aadbce 100644 --- a/doc/bugs/attachment_upload_does_not_work_for_windows_clients.mdwn +++ b/doc/bugs/attachment_upload_does_not_work_for_windows_clients.mdwn @@ -4,6 +4,13 @@ It seems as if windows clients (IE) submit filenames with backslash as directory But the attachment plugin translates these backslashes to underscore, making the whole path a filename. +> As far as I can see, that just means that the file will be saved with +> a filename something like `c:__92__My_Documents__92__somefile`. +> I don't see any "does not work" here. Error message? +> +> Still, I don't mind adding a special case, though obviously not in +> `basename`. [[done]] --[[Joey]] + This little hack fixed the backslash problem, although I wonder if that really is the problem? (Everything works perfectly from linux clients of course. :-)