avoid hardlinking files owned by others
authorJoey Hess <joey@kodama.kitenet.net>
Sun, 13 Jul 2008 03:31:27 +0000 (23:31 -0400)
committerJoey Hess <joey@kodama.kitenet.net>
Sun, 13 Jul 2008 03:31:27 +0000 (23:31 -0400)
If hardlinks are enabled, it would hardlink files from the underlay. That
was sorta annoying if you tried to edit by hand for some reason, so let's
not. Files that are hardlinked should be rare enough that a few extra stats
won't hurt.

IkiWiki/Render.pm

index c241fd40b5beb7abff5901246930d978cb9476b5..990fcaaa111d3d48985eff126fbdd30bd0d17003 100644 (file)
@@ -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
                }