Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

DbmFileLocater.cxx

Go to the documentation of this file.
00001 
00002 // DbmFileLocater                                                     //
00003 //                                                                    //
00004 // Package: Dbm (Database Maintenance).                               //
00005 //                                                                    //
00006 // N. West 08/2001                                                    //
00007 //                                                                    //
00008 // Concept: Utility to locate files in SRT private and public         //
00009 //          directories.                                              //
00010 //                                                                    //
00011 // Purpose: Aid access to utility files used by Dbm                   //
00012 //                                                                    //
00014 
00015 #include <fstream>
00016 
00017 #include "TSystem.h"
00018 
00019 #include "DatabaseMaintenance/DbmFileLocater.h"
00020 #include "LeakChecker/Lea.h"
00021 #include "MessageService/MsgService.h"
00022 
00023 using namespace std;
00024 
00025 ClassImp(DbmFileLocater)
00026 
00027 
00028 //   Definition of static data members
00029 //   *********************************
00030 
00031 CVSID("$Id: DbmFileLocater.cxx,v 1.3 2003/05/07 07:34:58 west Exp $");
00032 
00033 // Definition of member functions (alphabetical order)
00034 // ***************************************************
00035 
00036 
00037 //.....................................................................
00038 
00039 DbmFileLocater::DbmFileLocater()
00040 {
00041 //
00042 //
00043 //  Purpose:  Default constructor
00044 //
00045 //  Arguments:  None.
00046 //
00047 //  Return:    n/a
00048 //
00049 //  Contact:   N. West
00050 //
00051 //  Specification:-
00052 //  =============
00053 //
00054 //  o  Create a DbmFileLocater.
00055 
00056 
00057 //  Program Notes:-
00058 //  =============
00059 
00060 //  None.
00061 
00062   LEA_CTOR    //Leak Checker
00063 
00064   MSG("Dbm", Msg::kVerbose) << "Creating DbmFileLocater" << endl;
00065   
00066   
00067 // Put current directory first in list.
00068   fDirectories.push_back(".");
00069 
00070 // Look up SRT private and public names and add them if defined.
00071   const char* str = gSystem->Getenv("SRT_PRIVATE_CONTEXT");
00072   if ( str ) fDirectories.push_back(str);
00073   str = gSystem->Getenv("SRT_PUBLIC_CONTEXT");
00074   if ( str ) fDirectories.push_back(str);
00075 
00076 }
00077 
00078 //.....................................................................
00079 
00080 DbmFileLocater::~DbmFileLocater() {
00081 //
00082 //
00083 //  Purpose: Destructor
00084 //
00085 //  Arguments: 
00086 //    None.
00087 //
00088 //  Return:    n/a
00089 //
00090 //  Contact:   N. West
00091 //
00092 //  Specification:-
00093 //  =============
00094 //
00095 //  o  Destroy DbmFileLocater.
00096 
00097 
00098 //  Program Notes:-
00099 //  =============
00100 
00101 //  None.
00102 
00103   LEA_DTOR    //Leak Checker
00104 
00105   MSG("Dbm", Msg::kVerbose) << "Destroying DbmFileLocater" << endl;
00106 
00107 }
00108 
00109 //.....................................................................
00110 
00111 string DbmFileLocater::Find(const string& fileName) const {
00112 //
00113 //
00114 //  Purpose: Attempt to find file in set of directories. 
00115 //
00116 //  Arguments: 
00117 //    fileName  in    File name, possibly with relative directory
00118 //                    e.g. DatabaseMaintenance/doc/Help.txt
00119 //
00120 //  Return:  Full ressolved file name or "" if not found.
00121 //
00122 //  Contact:   N. West
00123 //
00124 //  Specification:-
00125 //  =============
00126 //
00127 //  o Search in order through fDirectories, appending each in turn
00128 //   for required file. 
00129 
00130 //  Program Notes:-
00131 //  =============
00132 
00133 //  None.
00134 
00135   for (list<string>::const_iterator itr = fDirectories.begin();
00136        itr != fDirectories.end();
00137        ++itr) {
00138     string fName =  *itr + "/" + fileName;
00139     ifstream test(fName.c_str());
00140     if ( test.is_open() ) return fName;
00141   }
00142 
00143   MSG("Dbm",Msg::kInfo) << "Cannot find file " << fileName << endl;
00144   return "";
00145 
00146 }
00147 
00148 /*    Template for New Member Function
00149 
00150 //.....................................................................
00151 
00152 DbmFileLocater:: {
00153 //
00154 //
00155 //  Purpose:  
00156 //
00157 //  Arguments: 
00158 //    xxxxxxxxx    in    yyyyyy
00159 //
00160 //  Return:    
00161 //
00162 //  Contact:   N. West
00163 //
00164 //  Specification:-
00165 //  =============
00166 //
00167 //  o 
00168 
00169 //  Program Notes:-
00170 //  =============
00171 
00172 //  None.
00173 
00174 
00175 }
00176 
00177 */
00178 

Generated on Mon Feb 15 11:06:35 2010 for loon by  doxygen 1.3.9.1