aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/attachment.pm5
-rw-r--r--debian/changelog2
-rw-r--r--doc/bugs/attachment_upload_does_not_work_for_windows_clients.mdwn7
3 files changed, 13 insertions, 1 deletions
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 <joeyh@debian.org> 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. :-)