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;
  
  
  


Reply via email to