bool FileReference::update(const openstudio::path& searchDirectory) { makePathAbsolute(searchDirectory); openstudio::path p = path(); if (openstudio::filesystem::exists(p)) { m_timestampLast = DateTime::fromEpoch(openstudio::filesystem::last_write_time_as_time_t(p)); m_checksumLast = checksum(p); m_versionUUID = createUUID(); return true; } return false; }
bool FileReference::update(const openstudio::path& searchDirectory,bool lastOnly) { makePathAbsolute(searchDirectory); openstudio::path p = path(); if (boost::filesystem::exists(p)) { QFileInfo fileInfo(toQString(p)); OS_ASSERT(fileInfo.exists()); if (!lastOnly) { m_timestampCreate = toDateTime(fileInfo.created()); } m_timestampLast = toDateTime(fileInfo.lastModified()); m_checksumLast = checksum(p); m_versionUUID = createUUID(); return true; } return false; }
/////////////////////////////////////////////////////////////////////////////// // Note: this method should get speeded up (see Gnats PR 846). MyString MultiLogFiles::loadLogFileNameFromSubFile(const MyString &strSubFilename, const MyString &directory, bool &isXml, bool usingDefaultNode) { dprintf( D_FULLDEBUG, "MultiLogFiles::loadLogFileNameFromSubFile(%s, %s)\n", strSubFilename.Value(), directory.Value() ); 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 logFileName(""); MyString initialDir(""); MyString isXmlLogStr(""); // Now look through the submit file logical lines to find the // log file and initial directory (if specified) and combine // them into a path to the log file that's either absolute or // relative to the DAG submit directory. Also look for log_xml. const char *logicalLine; while( (logicalLine = logicalLines.next()) != NULL ) { MyString submitLine(logicalLine); MyString tmpLogName = getParamFromSubmitLine(submitLine, "log"); if ( tmpLogName != "" ) { logFileName = tmpLogName; } // If we are using the default node log, we don't care // about these if( !usingDefaultNode ) { MyString tmpInitialDir = getParamFromSubmitLine(submitLine, "initialdir"); if ( tmpInitialDir != "" ) { initialDir = tmpInitialDir; } MyString tmpLogXml = getParamFromSubmitLine(submitLine, "log_xml"); if ( tmpLogXml != "" ) { isXmlLogStr = tmpLogXml; } } } if ( !usingDefaultNode ) { // // Check for macros in the log file name -- we currently don't // handle those. // // If we are using the default node, we don't need to check this if ( logFileName != "" ) { if ( strstr(logFileName.Value(), "$(") ) { dprintf(D_ALWAYS, "MultiLogFiles: macros ('$(...') not allowed " "in log file name (%s) in DAG node submit files\n", logFileName.Value()); logFileName = ""; } } // Do not need to prepend initialdir if we are using the // default node log if ( logFileName != "" ) { // Prepend initialdir to log file name if log file name is not // an absolute path. if ( initialDir != "" && !fullpath(logFileName.Value()) ) { logFileName = initialDir + DIR_DELIM_STRING + logFileName; } // We do this in case the same log file is specified with a // relative and an absolute path. // Note: we now do further checking that doesn't rely on // comparing paths to the log files. wenger 2004-05-27. CondorError errstack; if ( !makePathAbsolute( logFileName, errstack ) ) { dprintf(D_ALWAYS, "%s\n", errstack.getFullText().c_str()); return ""; } } isXmlLogStr.lower_case(); isXml = (isXmlLogStr == "true"); if ( directory != "" ) { MyString errMsg; if ( !td.Cd2MainDir(errMsg) ) { dprintf(D_ALWAYS, "Error from Cd2MainDir: %s\n", errMsg.Value()); return ""; } } } return logFileName; }