@ -4,15 +4,39 @@
# We must make sourcedir() return an absolute path, because configdata.pm
# may be loaded as a module from any script in any directory, making
# relative paths untrustable. Because the result is used with 'use lib',
# we must ensure that it returns a Unix style path. Cwd::abs_path does
# that (File::Spec::Functions::rel2abs return O/S specific paths)
use File::Spec::Functions ;
# we must ensure that it returns a Unix style path. Mixing File::Spec
# and File::Spec::Unix does just that.
use File::Spec::Unix ;
use File::Spec ;
use Cwd qw( abs_path ) ;
sub _fixup_path {
my $ path = shift ;
# Make the path absolute at all times
$ path = abs_path ( $ path ) ;
if ( $^O eq 'VMS' ) {
# Convert any path of the VMS form VOLUME:[DIR1.DIR2]FILE to the
# Unix form /VOLUME/DIR1/DIR2/FILE, which is what VMS perl supports
# for 'use lib'.
# Start with spliting the native path
( my $ vol , my $ dirs , my $ file ) = File::Spec - > splitpath ( $ path ) ;
my @ dirs = File::Spec - > splitdir ( $ dirs ) ;
# Reassemble it as a Unix path
$ vol =~ s | : $| | ;
$ dirs = File::Spec::Unix - > catdir ( '' , $ vol , @ dirs ) ;
$ path = File::Spec::Unix - > catpath ( '' , $ dirs , $ file ) ;
}
return $ path ;
}
sub sourcedir {
return abs_path ( catdir ( $ config { sourcedir } , @ _ ) ) ;
return _fixup_path( File::Spec - > catdir ( $ config { sourcedir } , @ _ ) )
}
sub sourcefile {
return abs_path ( catfile ( $ config { sourcedir } , @ _ ) ) ;
return _fixup_path( File::Spec - > catfile ( $ config { sourcedir } , @ _ ) )
}
use lib sourcedir ( 'util' , 'perl' ) ;
use OpenSSL::Util ;