]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Render.pm
update
[ikiwiki.git] / IkiWiki / Render.pm
index 2ad80ced3354457cb4e79c217e36be37f0f52b90..80c99e4300bd85022fbe8a9b7cdb26d2e7f0b3b1 100644 (file)
@@ -98,7 +98,7 @@ sub genpage ($$$) { #{{{
                if ($page !~ /.*\/\Q$discussionlink\E$/ &&
                   (length $config{cgiurl} ||
                    exists $links{$page."/".$discussionlink})) {
-                       $template->param(discussionlink => htmllink($page, $page, gettext("Discussion"), 1, 1));
+                       $template->param(discussionlink => htmllink($page, $page, gettext("Discussion"), noimageinline => 1, forcesubpage => 1));
                        $actions++;
                }
        }
@@ -157,7 +157,7 @@ sub scan ($) { #{{{
 
                my @links;
                while ($content =~ /(?<!\\)$config{wiki_link_regexp}/g) {
-                       push @links, titlepage($2);
+                       push @links, linkpage($2);
                }
                if ($config{discussion}) {
                        # Discussion links are a special case since they're
@@ -198,22 +198,26 @@ sub render ($) { #{{{
                my $srcfd=readfile($srcfile, 1, 1);
                delete $depends{$file};
                will_render($file, $file, 1);
-               my $destfd=writefile($file, $config{destdir}, undef, 1, 1);
-               my $blksize = 16384;
-               my ($len, $buf, $written);
-               while ($len = sysread $srcfd, $buf, $blksize) {
-                       if (! defined $len) {
-                               next if $! =~ /^Interrupted/;
-                               error("failed to read $srcfile: $!");
-                       }
-                       my $offset = 0;
-                       while ($len) {
-                               defined($written = syswrite OUT, $buf, $len, $offset)
-                                       or error("failed to write $file: $!");
-                               $len -= $written;
-                               $offset += $written;
+               writefile($file, $config{destdir}, undef, 1, sub {
+                       my $destfd=shift;
+                       my $cleanup=shift;
+
+                       my $blksize = 16384;
+                       my ($len, $buf, $written);
+                       while ($len = sysread $srcfd, $buf, $blksize) {
+                               if (! defined $len) {
+                                       next if $! =~ /^Interrupted/;
+                                       error("failed to read $srcfile: $!", $cleanup);
+                               }
+                               my $offset = 0;
+                               while ($len) {
+                                       defined($written = syswrite $destfd, $buf, $len, $offset)
+                                               or error("failed to write $file: $!", $cleanup);
+                                       $len -= $written;
+                                       $offset += $written;
+                               }
                        }
-               }
+               });
                $oldpagemtime{$file}=time;
        }
 } #}}}
@@ -360,7 +364,7 @@ sub refresh () { #{{{
                                foreach my $file (keys %rendered, @del) {
                                        next if $f eq $file;
                                        my $page=pagename($file);
-                                       if (pagespec_match($page, $depends{$p})) {
+                                       if (pagespec_match($page, $depends{$p}, $p)) {
                                                debug(sprintf(gettext("rendering %s, which depends on %s"), $f, $page));
                                                render($f);
                                                $rendered{$f}=1;