X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debbugs%2FText.pm;h=3c34b97c4150eff6eb0708f8c01a1257f0beb642;hb=747a1435ec35ebac24e9e321e6b3b4afcc2bea7b;hp=f5ede9d699f9791b086a49eb7f06c69445d52b70;hpb=d61a76fc5e1b52929a02705c07ac03936fd14244;p=debbugs.git diff --git a/Debbugs/Text.pm b/Debbugs/Text.pm index f5ede9d..3c34b97 100644 --- a/Debbugs/Text.pm +++ b/Debbugs/Text.pm @@ -33,7 +33,7 @@ None known. use vars qw($DEBUG $VERSION @EXPORT_OK %EXPORT_TAGS @EXPORT @ISA); -use base qw(Exporter); +use Exporter qw(import); BEGIN { $VERSION = 1.00; @@ -64,7 +64,6 @@ use Data::Dumper; our %tt_templates; our %filled_templates; our $safe; -our $hole = Safe::Hole->new({}); our $language; # This function is what is called when someone does include('foo/bar') @@ -141,6 +140,7 @@ sub fill_in_template{ ref(\$param{template}) eq 'GLOB') { $tt_type = 'FILE_HANDLE'; $tt_source = $param{template}; + binmode($tt_source,":encoding(UTF-8)"); } elsif (ref($param{template}) eq 'SCALAR') { $tt_type = 'STRING'; @@ -193,17 +193,23 @@ sub fill_in_template{ my $tt; if ($tt_type eq 'FILE' and defined $tt_templates{$tt_source} and + ($tt_templates{$tt_source}{mtime} + 60) < time and (stat $tt_source)[9] <= $tt_templates{$tt_source}{mtime} ) { $tt = $tt_templates{$tt_source}{template}; } else { + my $passed_source = $tt_source; + my $passed_type = $tt_type; if ($tt_type eq 'FILE') { $tt_templates{$tt_source}{mtime} = (stat $tt_source)[9]; + $passed_source = IO::File->new($tt_source,'r'); + binmode($passed_source,":encoding(UTF-8)"); + $passed_type = 'FILEHANDLE'; } - $tt = Text::Template->new(TYPE => $tt_type, - SOURCE => $tt_source, + $tt = Text::Template->new(TYPE => $passed_type, + SOURCE => $passed_source, UNTAINT => 1, ); if ($tt_type eq 'FILE') {