@@ -394,6 +394,11 @@ void DirectRenamer::RenameFiles(DownloadQueue* downloadQueue, NzbInfo* nzbInfo,
394394 RenameCompleted (downloadQueue, nzbInfo);
395395}
396396
397+ /* *
398+ * @brief Renames (metadata only) partially downloaded files using info from PAR files.
399+ * Doesn't rename the files themselves. The actual renaming happens only when the download is complete.
400+ * Renaming incomplete files can cause DirectUnpack to fail, as it may try to unpack incomplete .rar files.
401+ */
397402int DirectRenamer::RenameFilesInProgress (NzbInfo* nzbInfo, FileHashList* parHashes, bool needRenamePars, int & vol)
398403{
399404 int renamedFiles = 0 ;
@@ -425,24 +430,17 @@ int DirectRenamer::RenameFilesInProgress(NzbInfo* nzbInfo, FileHashList* parHash
425430
426431 nzbInfo->PrintMessage (Message::mkInfo,
427432 " Renaming in-progress file %s to %s" ,
428- fileInfo-> GetFilename (), newOutputFilename.c_str ()
433+ oldOutputFilename. c_str (), newOutputFilename.c_str ()
429434 );
430435
431- bool renamed = (g_Options->GetDirectWrite () || fileInfo->GetForceDirectWrite ())
432- ? RenameFile (nzbInfo, oldOutputFilename, newOutputFilename)
433- : true ;
434-
435- if (renamed)
436+ if (Util::EmptyStr (fileInfo->GetOrigname ()))
436437 {
437- if (Util::EmptyStr (fileInfo->GetOrigname ()))
438- {
439- fileInfo->SetOrigname (fileInfo->GetFilename ());
440- }
441- fileInfo->SetOutputFilename (std::move (newOutputFilename));
442- fileInfo->SetFilename (std::move (newFilename));
443- fileInfo->SetFilenameConfirmed (true );
444- ++renamedFiles;
438+ fileInfo->SetOrigname (fileInfo->GetFilename ());
445439 }
440+
441+ fileInfo->SetFilename (std::move (newFilename));
442+ fileInfo->SetFilenameConfirmed (true );
443+ ++renamedFiles;
446444 }
447445
448446 return renamedFiles;
0 commit comments