Browse code

Modification to unrar codebase to enable keeping broken (bad CRC) files so that they can be scanned.

Micah Snyder authored on 2018/09/13 10:43:58
Showing 2 changed files
... ...
@@ -42,6 +42,7 @@ HANDLE PASCAL RAROpenArchiveEx(struct RAROpenArchiveDataEx *r)
42 42
     Data->Cmd.DllError=0;
43 43
     Data->OpenMode=r->OpenMode;
44 44
     Data->Cmd.FileArgs.AddString(L"*");
45
+    Data->Cmd.KeepBroken = true;
45 46
 
46 47
     char AnsiArcName[NM];
47 48
     *AnsiArcName=0;
... ...
@@ -366,7 +366,10 @@ cl_unrar_error_t unrar_extract_file(void* hArchive, const char* destPath, char *
366 366
     }
367 367
 
368 368
     process_file_ret = RARProcessFile(hArchive, RAR_EXTRACT, NULL, (char *)destPath);
369
-    if (ERAR_SUCCESS != process_file_ret) {
369
+    if (ERAR_BAD_DATA == process_file_ret) {
370
+        unrar_dbgmsg("unrar_extract_file: Warning: Bad data/Invalid CRC. Attempting to scan anyways...\n");
371
+    }
372
+    else if (ERAR_SUCCESS != process_file_ret) {
370 373
         status = unrar_retcode(process_file_ret);
371 374
         goto done;
372 375
     }