copy the attachment into srcdir

master
Joey Hess 2008-07-01 00:42:42 -04:00
parent 0f8ea7ecca
commit 4fa115fdb5
1 changed files with 25 additions and 9 deletions

View File

@ -49,6 +49,12 @@ sub formbuilder (@) { #{{{
error(gettext("bad attachment filename")); error(gettext("bad attachment filename"));
} }
# XXX Put the attachment in a subdir corresponding to the
# page being edited.
# The editpage code has already checked that
# $form->field('page') is valid.
$filename="XXX/$filename";
# Use a pagespec to test that the attachment is valid. # Use a pagespec to test that the attachment is valid.
if (exists $config{valid_attachments} && if (exists $config{valid_attachments} &&
length $config{valid_attachments}) { length $config{valid_attachments}) {
@ -59,14 +65,24 @@ sub formbuilder (@) { #{{{
} }
} }
# Move the attachment into place.
# Try to use a fast rename; fall back to copying.
prep_writefile($filename, $config{srcdir});
unlink($config{srcdir}."/".$filename);
if (! rename($tempfile, $config{srcdir}."/".$filename)) {
my $fh=$q->upload('attachment'); my $fh=$q->upload('attachment');
if (! defined $fh || ! ref $fh) { if (! defined $fh || ! ref $fh) {
error("failed to get filehandle"); error("failed to get filehandle");
} }
binmode($fh); binmode($fh);
while (<$fh>) { writefile($filename, $config{srcdir}, undef, 1, sub {
print STDERR $_."\n"; IkiWiki::fast_file_copy($tempfile, $filename, $fh, @_);
});
} }
# TODO add to vcs
# TODO trigger a wiki build if there's no vcs
} }
} # }}} } # }}}