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