[Templates-cvs] cvs commit: Template2/lib/Template Provider.pm
cvs@template-toolkit.org
cvs@template-toolkit.org
Wed, 22 Dec 2004 09:35:59 +0000
cvs 04/12/22 09:35:59
Modified: lib/Template Provider.pm
Log:
* added eval wrapper around mkpath() to return a sensible error or
decline if TOLERANT
Revision Changes Path
2.82 +21 -26 Template2/lib/Template/Provider.pm
Index: Provider.pm
===================================================================
RCS file: /template-toolkit/Template2/lib/Template/Provider.pm,v
retrieving revision 2.81
retrieving revision 2.82
diff -u -r2.81 -r2.82
--- Provider.pm 2004/07/23 12:49:53 2.81
+++ Provider.pm 2004/12/22 09:35:59 2.82
@@ -27,7 +27,7 @@
#
#----------------------------------------------------------------------------
#
-# $Id: Provider.pm,v 2.81 2004/07/23 12:49:53 abw Exp $
+# $Id: Provider.pm,v 2.82 2004/12/22 09:35:59 abw Exp $
#
#============================================================================
@@ -44,7 +44,7 @@
use File::Basename;
use File::Spec;
-$VERSION = sprintf("%d.%02d", q$Revision: 2.81 $ =~ /(\d+)\.(\d+)/);
+$VERSION = sprintf("%d.%02d", q$Revision: 2.82 $ =~ /(\d+)\.(\d+)/);
# name of document class
$DOCUMENT = 'Template::Document' unless defined $DOCUMENT;
@@ -376,26 +376,15 @@
# create COMPILE_DIR and sub-directories representing each INCLUDE_PATH
# element in which to store compiled files
if ($cdir) {
-
-# Stas' hack
-# # this is a hack to solve the problem with INCLUDE_PATH using
-# # relative dirs
-# my $segments = 0;
-# for (@$path) {
-# my $c = 0;
-# $c++ while m|\.\.|g;
-# $segments = $c if $c > $segments;
-# }
-# $cdir .= "/".join "/",('hack') x $segments if $segments;
-#
-
require File::Path;
foreach my $dir (@$path) {
next if ref $dir;
my $wdir = $dir;
$wdir =~ s[:][]g if $^O eq 'MSWin32';
$wdir =~ /(.*)/; # untaint
- &File::Path::mkpath(File::Spec->catfile($cdir, $1));
+ $wdir = $1;
+ $wdir = File::Spec->catfile($cdir, $1);
+ File::Path::mkpath($wdir) unless -d $wdir;
}
}
@@ -874,13 +863,20 @@
my $basedir = &File::Basename::dirname($compfile);
$basedir =~ /(.*)/;
$basedir = $1;
- &File::Path::mkpath($basedir) unless -d $basedir;
-
- my $docclass = $self->{ DOCUMENT };
- $error = 'cache failed to write '
- . &File::Basename::basename($compfile)
- . ': ' . $docclass->error()
- unless $docclass->write_perl_file($compfile, $parsedoc);
+
+ unless (-d $basedir) {
+ eval { File::Path::mkpath($basedir) };
+ $error = "failed to create compiled templates directory: $basedir ($@)"
+ if ($@);
+ }
+
+ unless ($error) {
+ my $docclass = $self->{ DOCUMENT };
+ $error = 'cache failed to write '
+ . &File::Basename::basename($compfile)
+ . ': ' . $docclass->error()
+ unless $docclass->write_perl_file($compfile, $parsedoc);
+ }
# set atime and mtime of newly compiled file, don't bother
# if time is undef
@@ -1032,7 +1028,6 @@
1;
-
__END__
@@ -1487,8 +1482,8 @@
=head1 VERSION
-2.79, distributed as part of the
-Template Toolkit version 2.13, released on 30 January 2004.
+2.81, distributed as part of the
+Template Toolkit version 2.14, released on 04 October 2004.
=head1 COPYRIGHT