diff options
-rw-r--r-- | IkiWiki/Plugin/attachment.pm | 16 | ||||
-rw-r--r-- | debian/changelog | 2 | ||||
-rw-r--r-- | debian/examples | 1 | ||||
-rw-r--r-- | doc/bugs/attachment:_failed_to_get_filehandle.mdwn | 4 |
4 files changed, 20 insertions, 3 deletions
diff --git a/IkiWiki/Plugin/attachment.pm b/IkiWiki/Plugin/attachment.pm index f49fe63f7..ef6d79a9c 100644 --- a/IkiWiki/Plugin/attachment.pm +++ b/IkiWiki/Plugin/attachment.pm @@ -21,6 +21,8 @@ sub formbuilder_setup (@) { #{{{ my $q=$params{cgi}; if (defined $form->field("do") && $form->field("do") eq "edit") { + # Add attachment field, set type to multipart. + $form->enctype(&CGI::MULTIPART); $form->field(name => 'attachment', type => 'file'); # These buttons are not put in the usual place, so # are not added to the normal formbuilder button list. @@ -87,9 +89,17 @@ sub formbuilder (@) { #{{{ # This is an (apparently undocumented) way to get the name # of the temp file that CGI writes the upload to. my $tempfile=$q->tmpFileName($filename); - if (! defined $tempfile || ! length $tempfile) { - error("failed to determine tempfile name"); + # perl 5.8 needs an alternative, awful method + if ($q =~ /HASH/ && exists $q->{'.tmpfiles'}) { + foreach my $key (keys(%{$q->{'.tmpfiles'}})) { + $tempfile=$q->tmpFileName(\$key); + last if defined $tempfile && length $tempfile; + } + } + if (! defined $tempfile || ! length $tempfile) { + error("CGI::tmpFileName failed to return the uploaded file name"); + } } $filename=IkiWiki::titlepage( @@ -143,7 +153,7 @@ sub formbuilder (@) { #{{{ # even that doesn't always work, # fall back to opening the tempfile $fh=undef; - open($fh, "<", $tempfile) || error("failed to open $tempfile: $!"); + open($fh, "<", $tempfile) || error("failed to open \"$tempfile\": $!"); } } binmode($fh); diff --git a/debian/changelog b/debian/changelog index 66ccc5b60..725b9c1bc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,8 @@ ikiwiki (2.53) UNRELEASED; urgency=low that currently has no attachments. * Fix a bug with links to pages whose names contained colons. * attachment: Support old versions of CGI.pm that lack an upload method. + * Include ikiwiki.setup in examples in the debian package. + * attachment: Support perl 5.8's buggy version of CGI.pm. -- Joey Hess <joeyh@debian.org> Mon, 07 Jul 2008 01:52:48 -0400 diff --git a/debian/examples b/debian/examples new file mode 100644 index 000000000..d94312ed0 --- /dev/null +++ b/debian/examples @@ -0,0 +1 @@ +doc/ikiwiki.setup diff --git a/doc/bugs/attachment:_failed_to_get_filehandle.mdwn b/doc/bugs/attachment:_failed_to_get_filehandle.mdwn index 8bb9aadb9..e2a9b483d 100644 --- a/doc/bugs/attachment:_failed_to_get_filehandle.mdwn +++ b/doc/bugs/attachment:_failed_to_get_filehandle.mdwn @@ -102,4 +102,8 @@ Is it Ikiwiki bug or my attachment plugin is misconfigured? --[[Paweł|ptecza]] > I've reproduced the bug, and it does seem to be a bug with the perl in > debian stable/ubuntu hardy. Trying to figure it out --[[Joey]] +> This was amazingly disgusting, see commit message for the full horror of +> the details. I think it's [[done]] -- at least it works on debian stable +> now. --[[Joey]] + >> Thank you very much for your effort, Joey! :) --[[Paweł|ptecza]] |