-
-// ===================================================================================
-
- // See : http://www.techbytes.ca/techbyte103.html for more O.S.
- static inline bool FileExists(std::string strFilename)
- {
- struct stat stFileInfo;
- bool blnReturn;
- int intStat;
-
- // Attempt to get the file attributes
- intStat = stat(strFilename.c_str(),&stFileInfo);
- if(intStat == 0) {
- // We were able to get the file attributes
- // so the file obviously exists.
- blnReturn = true;
- } else {
- // We were not able to get the file attributes.
- // This may mean that we don't have permission to
- // access the folder which contains this file. If you
- // need to do that level of checking, lookup the
- // return values of stat which will give you
- // more details on why stat failed.
- blnReturn = false;
- }
-
- return(blnReturn);
- }
-
-
-// ===================================================================================
-
- static std::string ExtractPackageName(const std::string &name,
- std::string& path)
- {
- std::string pkgname;
- path = "";
-
- std::string::size_type slash_position = name.find_last_of("/\\");
- if (slash_position != std::string::npos)
- {
- pkgname = name.substr(slash_position+1,std::string::npos);
- path = name.substr(0,slash_position);
- // std::cout << "F:P='"<<path<<"'"<<std::endl;//+1,std::string::npos);
- }
- else
- {
- pkgname = name;
- }
-
- // remove {.so | dll} if any
- std::string::size_type dot_position = pkgname.find_last_of('.');
- if (dot_position != std::string::npos){
- pkgname = pkgname.substr(0,dot_position);
- }
-#if defined(__GNUC__)
-
- // GCC mechanism
- // shared lib name = libbb<name>.so
-
- // remove {libbb} if any
- if (memcmp ( pkgname.c_str(), "libbb", 5) == 0) {
- pkgname = pkgname.substr(5, pkgname.length());
- }
- /*
- /// \ \todo what would happen if (stupid) user names his package 'libbb' ?!?
- /// \ --> Should be forbidden!
- */
-#elif defined(_WIN32)
-
- // WIN 32 mechanism
- // shared lib name = <name>.dll
-
-// EED Problem loading package call bbtkTools
-// // remove {bb} if any
- if (memcmp (pkgname.c_str(), "bb", 2) == 0) {
- pkgname = pkgname.substr(2, pkgname.length());
- }
-
- /*
- /// \ \todo what would happen if (stupid) user names his package 'bb' ?!?
- /// \ --> Should be forbidden!
- */
-#else
- bbtkError("neither __GNUC__ nor _WIN32 ?!? How did you compile ?");
-#endif
- return pkgname;
- }
-
-// ===================================================================================
-
- static std::string ExtractScriptName(const std::string &name,
- std::string& path)
- {
- std::string pkgname;
-
- std::string::size_type slash_position = name.find_last_of("/\\");
- if (slash_position != std::string::npos) {
- pkgname =name.substr(slash_position+1,std::string::npos);
- path = name.substr(0,slash_position);
- } else {
- pkgname = name;
- }
- // remove {.bbs } if any
- std::string::size_type dot_position = pkgname.find_last_of('.');
- if (dot_position != std::string::npos){
- pkgname = pkgname.substr(0,dot_position);
- }
- return pkgname;
- }
-
-// ===================================================================================
-
- static std::string ExpandLibName(const std::string &name, bool verbose)
- {
- // ----- Think of expanding path name ( ./ ../ ../../ )
-
- char buf[2048]; // for getcwd
- char * currentDir = getcwd(buf, 2048);
- std::string cwd(currentDir);
- std::string libname(name);
- std::string fileSeparator;
- fileSeparator = ConfigurationFile::GetInstance().Get_file_separator();
- // tooHigh : true is user supplies a library pathname with too many "../"
- bool tooHigh = false;