From: Todd Wade <[email protected]>
>
> $ umask
> 0002
> $ perl -MFile::Temp -le '$File::Temp::KEEP_ALL = 1; File::Temp->new(DIR => 
>".");'
> $ ls -l
> -rw------- 1 me me 0 Sep  6 22:32 lz0IkRPULz
>
> This seems like a bug but other than monkey patching File::Temp I can't 
> figure 

> out a decent way to deal with this. Any ideas?

I swapped out File::Temp for File::MkTemp in Template::Document. Tests pass, I 
didn't check performance:

$ svn diff
Index: lib/Template/Document.pm
===================================================================
--- lib/Template/Document.pm    (revision 1260)
+++ lib/Template/Document.pm    (working copy)
@@ -297,11 +297,12 @@
     return $class->error("invalid filename: $file")
         unless $file =~ /^(.+)$/s;
 
+    require File::Basename;
+    my $dirname = File::Basename::dirname($file);
     eval {
-        require File::Temp;
-        require File::Basename;
-        ($fh, $tmpfile) = File::Temp::tempfile( 
-            DIR => File::Basename::dirname($file) 
+        require File::MkTemp;
+        ($fh, $tmpfile) = File::MkTemp::mkstempt( 
+            tempXXXXXX => $dirname 
         );
         my $perlcode = $class->as_perl($content) || die $!;
         
@@ -313,7 +314,7 @@
         close($fh);
     };
     return $class->error($@) if $@;
-    return rename($tmpfile, $file)
+    return rename("$dirname/$tmpfile", $file)
         || $class->error($!);
 }


_______________________________________________
templates mailing list
[email protected]
http://mail.template-toolkit.org/mailman/listinfo/templates

Reply via email to