]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Render.pm
avoid hardlinking files owned by others
[ikiwiki.git] / IkiWiki / Render.pm
index 2cdec421f1da745e6f6aa2060be1ce46b566a822..990fcaaa111d3d48985eff126fbdd30bd0d17003 100644 (file)
@@ -80,7 +80,7 @@ sub genpage ($$) { #{{{
        my $actions=0;
 
        if (length $config{cgiurl}) {
-               $template->param(editurl => cgiurl(do => "edit", page => pagetitle($page, 1)));
+               $template->param(editurl => cgiurl(do => "edit", page => $page));
                $template->param(prefsurl => cgiurl(do => "prefs"));
                $actions++;
        }
@@ -180,7 +180,7 @@ sub scan ($) { #{{{
        }
 } #}}}
 
-sub fast_file_copy ($$$$$) { #{{{
+sub fast_file_copy (@) { #{{{
        my $srcfile=shift;
        my $destfile=shift;
        my $srcfd=shift;
@@ -229,10 +229,14 @@ sub render ($) { #{{{
                will_render($file, $file, 1);
                
                if ($config{hardlink}) {
-                       prep_writefile($file, $config{destdir});
-                       unlink($config{destdir}."/".$file);
-                       if (link($srcfile, $config{destdir}."/".$file)) {
-                               return;
+                       # only hardlink if owned by same user
+                       my @stat=stat($srcfile);
+                       if ($stat[4] == $>) {
+                               prep_writefile($file, $config{destdir});
+                               unlink($config{destdir}."/".$file);
+                               if (link($srcfile, $config{destdir}."/".$file)) {
+                                       return;
+                               }
                        }
                        # if hardlink fails, fall back to copying
                }