本文整理汇总了C++中TmpDir::Cd2MainDir方法的典型用法代码示例。如果您正苦于以下问题:C++ TmpDir::Cd2MainDir方法的具体用法?C++ TmpDir::Cd2MainDir怎么用?C++ TmpDir::Cd2MainDir使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TmpDir
的用法示例。
在下文中一共展示了TmpDir::Cd2MainDir方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getParamFromSubmitLine
MyString
MultiLogFiles::loadValueFromSubFile(const MyString &strSubFilename,
const MyString &directory, const char *keyword)
{
dprintf( D_FULLDEBUG, "MultiLogFiles::loadValueFromSubFile(%s, %s, %s)\n",
strSubFilename.Value(), directory.Value(), keyword );
TmpDir td;
if ( directory != "" ) {
MyString errMsg;
if ( !td.Cd2TmpDir(directory.Value(), errMsg) ) {
dprintf(D_ALWAYS, "Error from Cd2TmpDir: %s\n", errMsg.Value());
return "";
}
}
StringList logicalLines;
if ( fileNameToLogicalLines( strSubFilename, logicalLines ) != "" ) {
return "";
}
MyString value("");
// Now look through the submit file logical lines to find the
// value corresponding to the keyword.
const char *logicalLine;
while( (logicalLine = logicalLines.next()) != NULL ) {
MyString submitLine(logicalLine);
MyString tmpValue = getParamFromSubmitLine(submitLine, keyword);
if ( tmpValue != "" ) {
value = tmpValue;
}
}
//
// Check for macros in the value -- we currently don't
// handle those.
//
if ( value != "" ) {
if ( strchr(value.Value(), '$') ) {
dprintf(D_ALWAYS, "MultiLogFiles: macros not allowed "
"in %s in DAG node submit files\n", keyword);
value = "";
}
}
if ( directory != "" ) {
MyString errMsg;
if ( !td.Cd2MainDir(errMsg) ) {
dprintf(D_ALWAYS, "Error from Cd2MainDir: %s\n", errMsg.Value());
return "";
}
}
return value;
}
示例2: dlog
//.........这里部分代码省略.........
dmask += eventMask;
dmask += "\"";
args.AppendArg( dmask.c_str() );
// Suppress the job's log file if that option is enabled.
if ( dm._suppressJobLogs ) {
debug_printf( DEBUG_VERBOSE, "Suppressing node job log file\n" );
args.AppendArg( "-a" );
args.AppendArg( "log = ''" );
}
ArgList parentNameArgs;
parentNameArgs.AppendArg( "-a" );
MyString parentNodeNames = MyString( "+DAGParentNodeNames = " ) +
"\"" + DAGParentNodeNames + "\"";
parentNameArgs.AppendArg( parentNodeNames.Value() );
// set any VARS specified in the DAG file
MyString anotherLine;
ListIterator<Job::NodeVar> varsIter(*vars);
Job::NodeVar nodeVar;
while ( varsIter.Next(nodeVar) ) {
// Substitute the node retry count if necessary. Note that
// we can't do this in Job::ResolveVarsInterpolations()
// because that's only called at parse time.
MyString value = nodeVar._value;
MyString retryStr( retry );
value.replaceString( "$(RETRY)", retryStr.Value() );
MyString varStr = nodeVar._name + " = " + value;
args.AppendArg( "-a" );
args.AppendArg( varStr.Value() );
}
// Set the special DAG_STATUS variable (mainly for use by
// "final" nodes).
args.AppendArg( "-a" );
MyString var = "DAG_STATUS = ";
var += dm.dag->_dagStatus;
args.AppendArg( var.Value() );
// Set the special FAILED_COUNT variable (mainly for use by
// "final" nodes).
args.AppendArg( "-a" );
var = "FAILED_COUNT = ";
var += dm.dag->NumNodesFailed();
args.AppendArg( var.Value() );
// how big is the command line so far
MyString display;
args.GetArgsStringForDisplay( &display );
int cmdLineSize = display.Length();
parentNameArgs.GetArgsStringForDisplay( &display );
int DAGParentNodeNamesLen = display.Length();
// how many additional chars must we still add to command line
// NOTE: according to the POSIX spec, the args +
// environ given to exec() cannot exceed
// _POSIX_ARG_MAX, so we also need to calculate & add
// the size of environ** to reserveNeeded
int reserveNeeded = strlen( cmdFile );
int maxCmdLine = _POSIX_ARG_MAX;
// if we don't have room for DAGParentNodeNames, leave it unset
if( cmdLineSize + reserveNeeded + DAGParentNodeNamesLen > maxCmdLine ) {
debug_printf( DEBUG_NORMAL, "Warning: node %s has too many parents "
"to list in its classad; leaving its DAGParentNodeNames "
"attribute undefined\n", DAGNodeName );
check_warning_strictness( DAG_STRICT_3 );
} else {
args.AppendArgsFromArgList( parentNameArgs );
}
if( hold_claim ){
args.AppendArg( "-a" );
MyString holdit = MyString("+") + MyString(ATTR_JOB_KEEP_CLAIM_IDLE) + " = "
+ dm._claim_hold_time;
args.AppendArg( holdit.Value() );
}
if (dm._submitDagDeepOpts.suppress_notification) {
args.AppendArg( "-a" );
MyString notify = MyString("notification = never");
args.AppendArg( notify.Value() );
}
args.AppendArg( cmdFile );
bool success = do_submit( args, condorID, dm.prohibitMultiJobs );
if ( !tmpDir.Cd2MainDir( errMsg ) ) {
debug_printf( DEBUG_QUIET,
"Could not change to original directory: %s\n",
errMsg.Value() );
success = false;
}
return success;
}
示例3: tokens
//.........这里部分代码省略.........
return false;
}
MyString logicalLine;
while ( reader.NextLogicalLine( logicalLine ) ) {
if ( logicalLine != "" ) {
// Note: StringList constructor removes leading
// whitespace from lines.
StringList tokens( logicalLine.Value(), " \t" );
tokens.rewind();
const char *firstToken = tokens.next();
if ( !strcasecmp( firstToken, "config" ) ) {
// Get the value.
const char *newValue = tokens.next();
if ( !newValue || !strcmp( newValue, "" ) ) {
AppendError( errMsg, "Improperly-formatted "
"file: value missing after keyword "
"CONFIG" );
result = false;
} else {
// Add the value we just found to the config
// files list (if it's not already in the
// list -- we don't want duplicates).
configFiles.rewind();
char *existingValue;
bool alreadyInList = false;
while ( ( existingValue = configFiles.next() ) ) {
if ( !strcmp( existingValue, newValue ) ) {
alreadyInList = true;
}
}
if ( !alreadyInList ) {
// Note: append copies the string here.
configFiles.append( newValue );
}
}
//some DAG commands are needed for condor_submit_dag, too...
} else if ( !strcasecmp( firstToken, "SET_JOB_ATTR" ) ) {
// Strip of DAGMan-specific command name; the
// rest we pass to the submit file.
logicalLine.replaceString( "SET_JOB_ATTR", "" );
logicalLine.trim();
if ( logicalLine == "" ) {
AppendError( errMsg, "Improperly-formatted "
"file: value missing after keyword "
"SET_JOB_ATTR" );
result = false;
} else {
attrLines.append( logicalLine.Value() );
}
}
}
}
reader.Close();
//
// Check the specified config file(s) against whatever we
// currently have, setting the config file if it hasn't
// been set yet, flagging an error if config files conflict.
//
configFiles.rewind();
char * cfgFile;
while ( (cfgFile = configFiles.next()) ) {
MyString cfgFileMS = cfgFile;
MyString tmpErrMsg;
if ( MakePathAbsolute( cfgFileMS, tmpErrMsg ) ) {
if ( configFile == "" ) {
configFile = cfgFileMS;
} else if ( configFile != cfgFileMS ) {
AppendError( errMsg, MyString("Conflicting DAGMan ") +
"config files specified: " + configFile +
" and " + cfgFileMS );
result = false;
}
} else {
AppendError( errMsg, tmpErrMsg );
result = false;
}
}
//
// Go back to our original directory.
//
MyString tmpErrMsg;
if ( !dagDir.Cd2MainDir( tmpErrMsg ) ) {
AppendError( errMsg,
MyString("Unable to change to original directory ") +
tmpErrMsg );
result = false;
}
}
return result;
}
示例4:
//.........这里部分代码省略.........
// condor_submit_dag. We need -no_submit so we don't
// actually run the subdag now; we need -update_submit
// so the lower-level .condor.sub file will get
// updated, in case it came from an earlier version
// of condor_submit_dag.
ArgList args;
args.AppendArg( "condor_submit_dag" );
args.AppendArg( "-no_submit" );
args.AppendArg( "-update_submit" );
// Add in arguments we're passing along.
if ( deepOpts.bVerbose ) {
args.AppendArg( "-verbose" );
}
if ( deepOpts.bForce && !isRetry ) {
args.AppendArg( "-force" );
}
if (deepOpts.strNotification != "" ) {
args.AppendArg( "-notification" );
if(deepOpts.suppress_notification) {
args.AppendArg( "never" );
} else {
args.AppendArg( deepOpts.strNotification.Value() );
}
}
if ( deepOpts.strDagmanPath != "" ) {
args.AppendArg( "-dagman" );
args.AppendArg( deepOpts.strDagmanPath.Value() );
}
if ( deepOpts.useDagDir ) {
args.AppendArg( "-usedagdir" );
}
if ( deepOpts.strOutfileDir != "" ) {
args.AppendArg( "-outfile_dir" );
args.AppendArg( deepOpts.strOutfileDir.Value() );
}
args.AppendArg( "-autorescue" );
args.AppendArg( deepOpts.autoRescue );
if ( deepOpts.doRescueFrom != 0 ) {
args.AppendArg( "-dorescuefrom" );
args.AppendArg( deepOpts.doRescueFrom );
}
if ( deepOpts.allowVerMismatch ) {
args.AppendArg( "-allowver" );
}
if ( deepOpts.importEnv ) {
args.AppendArg( "-import_env" );
}
if ( deepOpts.recurse ) {
args.AppendArg( "-do_recurse" );
}
if ( deepOpts.updateSubmit ) {
args.AppendArg( "-update_submit" );
}
if( priority != 0) {
args.AppendArg( "-Priority" );
args.AppendArg( priority );
}
if( deepOpts.suppress_notification ) {
args.AppendArg( "-suppress_notification" );
} else {
args.AppendArg( "-dont_suppress_notification" );
}
args.AppendArg( dagFile );
MyString cmdLine;
args.GetArgsStringForDisplay( &cmdLine );
dprintf( D_ALWAYS, "Recursive submit command: <%s>\n",
cmdLine.Value() );
// Now actually run the command.
int retval = my_system( args );
if ( retval != 0 ) {
dprintf( D_ALWAYS, "ERROR: condor_submit_dag -no_submit "
"failed on DAG file %s.\n", dagFile );
result = 1;
}
// Change back to the directory we started from.
if ( !tmpDir.Cd2MainDir( errMsg ) ) {
dprintf( D_ALWAYS, "Error (%s) changing back to original directory\n",
errMsg.Value() );
}
return result;
}