StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StDbDefaults.cc
1 #include "StDbDefaults.hh"
2 #include "stdb_streams.h"
3 #include <dirent.h>
4 #include <stdlib.h>
5 using namespace std;
6 StDbDefaults* StDbDefaults::mInstance=0;
7 
8 StDbDefaults::StDbDefaults(){
9 
10  strncpy(mversion,"default",sizeof(mversion));
11  strncpy(mflavor,"ofl",sizeof(mflavor));
12  mprodTime = 0;
13  mendTime =2145873600; // Dec 31, 2037
14  strncpy(mdbServerVar,"STDB_SERVERS",sizeof(mdbServerVar));
15  strncpy(mdbServerFile,"dbServers.xml",sizeof(mdbServerFile));
16 
17 }
18 
20 char* StDbDefaults::getServerFileName(const dbFindServerMode mode){
21 
22  if(mode==userHome) return getFileName("HOME");
23  if(mode==serverEnvVar) return getFileName(mdbServerVar);
24  if(mode==starDefault) return getFileName("STAR");
25 
26  return NULL;
27 };
28 
29 
31 char* StDbDefaults::getFileName(const char* fileName){
32 
33  char* nullReturn=0;
34  if(!fileName) return nullReturn;
35 
36  StString fn;
37 
38  if(strcmp(fileName,"HOME")==0){
39  fn << ( getenv("HOME") ? getenv("HOME") : "" ) << "/" << mdbServerFile;
40  } else if(strcmp(fileName,"STAR")==0){
41  fn << ( getenv("STAR") ? getenv("STAR") : "" ) << "/" << "StDb/servers/" <<mdbServerFile;
42  } else {
43  char* fname = getenv(fileName);
44  if ( fname == NULL || !fname ) { return nullReturn; }
45  fn << fname;
46  if ( opendir(fname) ) { fn << "/" << mdbServerFile; }
47  }
48 
49  string fns=fn.str();
50  char* retVal= new char[fns.length()+1];
51  strcpy(retVal,fns.c_str());
52 
53  return retVal;
54 }
55 
56 
57 
58 
59 
60