cvsuser 02/06/07 15:40:36
Modified: P5EEx/Blue/P5EEx/Blue/Config File.pm
Log:
added better autodetection of location of config file
Revision Changes Path
1.7 +27 -15 p5ee/P5EEx/Blue/P5EEx/Blue/Config/File.pm
Index: File.pm
===================================================================
RCS file: /cvs/public/p5ee/P5EEx/Blue/P5EEx/Blue/Config/File.pm,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -w -r1.6 -r1.7
--- File.pm 19 Apr 2002 04:37:09 -0000 1.6
+++ File.pm 7 Jun 2002 22:40:36 -0000 1.7
@@ -1,10 +1,10 @@
#############################################################################
-## $Id: File.pm,v 1.6 2002/04/19 04:37:09 spadkins Exp $
+## $Id: File.pm,v 1.7 2002/06/07 22:40:36 spadkins Exp $
#############################################################################
package P5EEx::Blue::Config::File;
-$VERSION = do { my @r=(q$Revision: 1.6 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
+$VERSION = do { my @r=(q$Revision: 1.7 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
use P5EEx::Blue::P5EE;
use P5EEx::Blue::Config;
@@ -25,7 +25,7 @@
local(*FILE);
- my ($file, $testfile, $dir, @files, $filebase, $filetype, $scriptbase, $script);
+ my ($file, $testfile, $confdir, @files, $filebase, $filetype, $scriptbase,
$script);
my ($serializer_class, $open);
$file = $args->{configFile};
@@ -33,14 +33,19 @@
$serializer_class = $args->{configSerializerClass};
$serializer_class = $ENV{P5EE_CONFIG_FILE_SERIALIZER} if (!$serializer_class);
- $dir = $0;
- if ($dir =~ m!/[^/]+$!) {
- $dir =~ s!/[^/]+$!!;
+ if ($args->{prefix}) {
+ $confdir = $args->{prefix} . "/etc";
}
else {
- $dir = ".";
+ $confdir = $0;
+ if ($confdir =~ m!/[^/]+$!) {
+ $confdir =~ s!/[^/]+$!!;
+ }
+ else {
+ $confdir = ".";
+ }
+ $confdir = "." if (!$confdir);
}
- $dir = "." if (!$dir);
$scriptbase = $0;
$scriptbase =~ s!.*/!!; # remove leading path
@@ -48,18 +53,25 @@
$scriptbase =~ s!\.[^\.]+$!!; # remove trailing extension (i.e. ".cgi")
if ($file) {
- # the file name was specified and it doesn't exist in the current
- # directory, so look in the script directory
- if (! -r $file && $dir ne ".") {
- $testfile = "$dir/$file";
- $file = $testfile if (-r $testfile);
+ my $conf_found = 0;
+ if (!$conf_found && -r $file) {
+ $conf_found = 1;
+ }
+ if (!$conf_found && -r "etc/$file") {
+ $file = "etc/$file";
+ $conf_found = 1;
+ }
+ if (!$conf_found && -r "$confdir/$file") {
+ $file = "$confdir/$file";
+ $conf_found = 1;
}
}
- if (!$file) { # no file specified
+ # no file specified: (rare)
+ if (!$file) {
CONFIGFILE: foreach $filetype qw(pl xml ini properties perl conf) {
foreach $filebase ($scriptbase, "config") {
- $testfile = ($dir eq ".") ? "$filebase.$filetype" :
"$dir/$filebase.$filetype";
+ $testfile = ($confdir eq ".") ? "$filebase.$filetype" :
"$confdir/$filebase.$filetype";
next if ($testfile eq $script);
if (-r $testfile) {
$file = $testfile;