void ArticleDownloader::BuildOutputFilename() { char szFilename[1024]; snprintf(szFilename, 1024, "%s%i.%03i", g_pOptions->GetTempDir(), m_pFileInfo->GetID(), m_pArticleInfo->GetPartNumber()); szFilename[1024-1] = '\0'; m_pArticleInfo->SetResultFilename(szFilename); char tmpname[1024]; snprintf(tmpname, 1024, "%s.tmp", szFilename); tmpname[1024-1] = '\0'; SetTempFilename(tmpname); if (g_pOptions->GetDirectWrite()) { m_pFileInfo->LockOutputFile(); if (m_pFileInfo->GetOutputFilename()) { strncpy(szFilename, m_pFileInfo->GetOutputFilename(), 1024); szFilename[1024-1] = '\0'; } else { snprintf(szFilename, 1024, "%s%c%i.out.tmp", m_pFileInfo->GetNZBInfo()->GetDestDir(), (int)PATH_SEPARATOR, m_pFileInfo->GetID()); szFilename[1024-1] = '\0'; m_pFileInfo->SetOutputFilename(szFilename); } m_pFileInfo->UnlockOutputFile(); SetOutputFilename(szFilename); } }
bool DarunGrim::CreateDGF( char *storage_filename, char *log_filename, char *ida_log_filename_for_source, char *ida_log_filename_for_target, unsigned long start_address_for_source, unsigned long end_address_for_source, unsigned long start_address_for_target, unsigned long end_address_for_target ) { Logger.Log(10, "%s: entry\n", __FUNCTION__ ); SetOutputFilename(storage_filename); SetLogFilename( log_filename ); SetIDALogFilename( ida_log_filename_for_source ); RunIDAToCreateDGF( SourceFilename.c_str(), start_address_for_source, end_address_for_source ); SetIDALogFilename( ida_log_filename_for_target ); RunIDAToCreateDGF( TargetFilename.c_str(), start_address_for_target, end_address_for_target ); return OpenDatabase(storage_filename); }
bool PreviewGenerator::SaveOutFile(const QByteArray &data, const QDateTime &dt) { if (m_outFileName.isEmpty()) { QString remotecachedirname = QString("%1/cache/remotecache").arg(GetConfDir()); QDir remotecachedir(remotecachedirname); if (!remotecachedir.exists()) { if (!remotecachedir.mkdir(remotecachedirname)) { LOG(VB_GENERAL, LOG_ERR, LOC + "Remote Preview failed because we could not create a " "remote cache directory"); return false; } } QString filename = m_programInfo.GetBasename() + ".png"; SetOutputFilename(QString("%1/%2").arg(remotecachedirname).arg(filename)); } QFile file(m_outFileName); bool ok = file.open(QIODevice::Unbuffered|QIODevice::WriteOnly); if (!ok) { LOG(VB_GENERAL, LOG_ERR, LOC + QString("Failed to open: '%1'") .arg(m_outFileName)); } off_t offset = 0; size_t remaining = data.size(); uint failure_cnt = 0; while ((remaining > 0) && (failure_cnt < 5)) { ssize_t written = file.write(data.data() + offset, remaining); if (written < 0) { failure_cnt++; usleep(50000); continue; } failure_cnt = 0; offset += written; remaining -= written; } if (ok && !remaining) { file.close(); struct utimbuf times; times.actime = times.modtime = dt.toTime_t(); utime(m_outFileName.toLocal8Bit().constData(), ×); LOG(VB_FILE, LOG_INFO, LOC + QString("Saved: '%1'").arg(m_outFileName)); } else { file.remove(); } return ok; }