void SFTWorker::finishFile() { m_hFh.close(); std::string file = m_pCurFile->getFullPath(); gcString str("{0}", m_pCurFile->getTimeStamp()); try { ptime t(from_iso_string(str)); bfs::path spath(file); tm pt_tm = to_tm(t); last_write_time(spath, mktime(&pt_tm)); } catch (...) { Warning(gcString("Failed to change {0} time stamp to {1}.\n", m_pCurFile->getName(), str)); } safe_delete(m_pBzs); std::string hash = "Failed to generate hash"; #ifdef NIX //struct stat s; bool isWinExe = false; if (file.size() > 4) { std::string lastFour(file.end() - 4, file.end()); std::transform(lastFour.begin(), lastFour.end(), lastFour.begin(), ::toupper); if (lastFour == ".EXE") isWinExe = true; } //( && stat(file.c_str(), &s) == 0) bool isExecutable = HasAnyFlags(m_pCurFile->getFlags(), MCFCore::MCFFileI::FLAG_XECUTABLE); if (isExecutable || isWinExe) chmod(file.c_str(), (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)); #endif if (m_pCurFile->isZeroSize() || m_pCurFile->hashCheckFile(&hash)) { m_pCT->endTask(m_uiId, BaseMCFThread::SF_STATUS_COMPLETE); } else { Warning(gcString("Hash check failed for file [{0}]: Cur: {1} != Should: {2}\n", m_pCurFile->getName(), hash, m_pCurFile->getCsum())); m_pCT->endTask(m_uiId, BaseMCFThread::SF_STATUS_HASHMISSMATCH); } }
Task TestSupportLibrary::createTask(string taskName, string taskStart, string taskEnd, string taskDeadline, vector<string> taskTags, bool isDone) { Task newTask; newTask.setTaskName(taskName); if (taskStart != "not-a-date-time") { newTask.setTaskStartTime(from_iso_string(taskStart)); } else { newTask.setTaskStartTime(not_a_date_time); } if (taskEnd != "not-a-date-time") { newTask.setTaskEndTime(from_iso_string(taskEnd)); } else { newTask.setTaskEndTime(not_a_date_time); } if (taskDeadline != "not-a-date-time") { newTask.setTaskDeadline(from_iso_string(taskDeadline)); } else { newTask.setTaskDeadline(not_a_date_time); } newTask.setTaskTags(taskTags); if (isDone) { newTask.setTaskIsDone(); } return newTask; }
//similar to convertStringToPtime, introduced for SLAP void StorageConverter::convertStringEndDatetimeToTask(Task& convertedTask){ try{ if (_taskDatetimeString == NOT_A_DATETIME){ convertedTask.setTaskEndTime(not_a_date_time); } else { ptime taskEndTime(from_iso_string(_taskDatetimeString)); convertedTask.setTaskEndTime(taskEndTime); } } catch(const out_of_range&){ compileErrorMessage(STORAGE_FUNCTION_CONVERT_PTIME_END,STORAGE_MSG_PTIME_END_ERROR); logErrorMessage(_logErrorMessage); throw; } }
//similar to convertStringToPtime, introduced for SLAP void StorageConverter::convertStringDeadlineToTask(Task& convertedTask){ try{ if (_taskDatetimeString == NOT_A_DATETIME){ convertedTask.setTaskDeadline(not_a_date_time); } else { ptime taskDeadline(from_iso_string(_taskDatetimeString)); convertedTask.setTaskDeadline(taskDeadline); } return; } catch(...){ compileErrorMessage(STORAGE_FUNCTION_CONVERT_PTIME_DEADLINE,STORAGE_MSG_PTIME_DEADLINE_ERROR); logErrorMessage(_logErrorMessage); throw; } }
//converts a Datetime string into a ptime object //function throws exception if conversion is not successful void StorageConverter::convertStringStartDatetimeToTask(Task& convertedTask){ try{ if (_taskDatetimeString == NOT_A_DATETIME){ convertedTask.setTaskStartTime(not_a_date_time); } else { ptime taskStartTime(from_iso_string(_taskDatetimeString)); convertedTask.setTaskStartTime(taskStartTime); } } catch(exception&){ compileErrorMessage(STORAGE_FUNCTION_CONVERT_PTIME_START, STORAGE_MSG_PTIME_START_ERROR); logErrorMessage(_logErrorMessage); throw; } return; }