bool isTorqueHomeFile(dmtcp::string &path) { // check if file is in home directory char *ptr; dmtcp::string hpath = ""; if ((ptr = getenv("HOME"))) { hpath = dmtcp::string() + ptr; JTRACE("Home directory:")(hpath)(path); }else{ JTRACE("Cannot determine user HOME directory!"); return false; } if( hpath.size() >= path.size() ){ JTRACE("Length of path is less than home dir"); return false; } if( path.substr(0,hpath.size()) != hpath ){ JTRACE("prefix of path is not home directory")(path)(hpath); return false; } dmtcp::string suffix1 = ".OU", suffix2 = ".ER"; if( !( (path.substr(path.size() - suffix1.size()) == suffix1) || (path.substr(path.size() - suffix2.size()) == suffix2) ) ){ JTRACE("path has no .OU or .ER suffix")(path); return false; } char jobid[256]; sprintf(jobid,"%lu",torque_jobid); dmtcp::string spool_path = hpath + "/.pbs_spool/" + jobid; dmtcp::string home_path = hpath + jobid; if( path.substr(0,spool_path.size()) == spool_path ){ JTRACE("File is located in $HOME/.pbs_spool/. It is Torque/PBS stdio file")(path); return true; } if( path.substr(0,home_path.size()) == home_path ){ JTRACE("File is located in $HOME/. It is Torque/PBS stdio file")(path); return true; } return false; }
bool isTorqueFile(dmtcp::string relpath, dmtcp::string &path) { JTRACE("Start"); switch( rmgr_type ){ case Empty: probeTorque(); if( rmgr_type != torque ) return false; break; case torque: break; default: return false; } if( torque_home().size() == 0 ) return false; dmtcp::string abspath = torque_home() + "/" + relpath; JTRACE("Compare path with")(path)(abspath); if( path.size() < abspath.size() ) return false; if( path.substr(0,abspath.size()) == abspath ) return true; return false; }
static void rem_trailing_slash(dmtcp::string &path) { size_t i = path.size() - 1; while( (path[i] == ' ' || path[i] == '/' || path == "\\" ) && i>0 ) i--; if( i+1 < path.size() ) path = path.substr(0,i+1); }
static bool isImportantEnv ( dmtcp::string str ) { str = str.substr(0, str.find("=")); for ( size_t i=0; i<ourImportantEnvsCnt; ++i ) { if ( str == ourImportantEnvs[i] ) return true; } return false; }
bool isTorqueStderr(dmtcp::string &path) { if( !isTorqueIOFile(path) ) return false; dmtcp::string suffix = ".ER"; if( (path.substr(path.size() - suffix.size()) == suffix) ){ return true; } return false; }