return 0;
}
-int ventoy_decompress_tar(char *tarbuf, int buflen, int *tarsize)
-{
- int rc = 1;
- int inused;
- HANDLE hFile;
- DWORD dwSize;
- DWORD dwRead;
- WCHAR FullPath[MAX_PATH];
- BYTE *buffer;
- VENTOY_MAGIC Magic;
-
- GetModuleFileNameW(NULL, FullPath, MAX_PATH);
- hFile = CreateFileW(FullPath, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
- if (hFile == INVALID_HANDLE_VALUE)
- {
- vlog("Failed to open self %u\n", LASTERR);
- return 1;
- }
-
- dwSize = GetFileSize(hFile, NULL);
- if (dwSize == INVALID_FILE_SIZE)
- {
- vlog("Invalid self exe size %u\n", LASTERR);
- CHECK_CLOSE_HANDLE(hFile);
- return 1;
- }
-
- buffer = malloc(dwSize);
- if (!buffer)
- {
- vlog("Failed to malloc %u\n", dwSize);
- CHECK_CLOSE_HANDLE(hFile);
- return 1;
- }
- ReadFile(hFile, buffer, dwSize, &dwRead, NULL);
-
- memcpy(&Magic, buffer + dwSize - sizeof(Magic), sizeof(Magic));
- if (Magic.magic1 == 0x54535251 && Magic.magic2 == 0xa4a3a2a1)
- {
- g_unxz_buffer = (UCHAR *)tarbuf;
- g_unxz_len = 0;
-
- unxz(buffer + dwSize - Magic.xzlen - sizeof(Magic), Magic.xzlen, NULL, unxz_flush, NULL, &inused, unxz_error);
- vlog("bigexe:%u xzlen:%u rawdata size:%d\n", dwSize, Magic.xzlen, g_unxz_len);
-
- if (inused != Magic.xzlen)
- {
- vlog("Failed to unxz www %d\n", inused);
- rc = 1;
- }
- else
- {
- *tarsize = g_unxz_len;
- rc = 0;
- }
- }
- else
- {
- vlog("Invalid magic 0x%x 0x%x\n", Magic.magic1, Magic.magic2);
- rc = 1;
- }
-
- free(buffer);
- CHECK_CLOSE_HANDLE(hFile);
-
- return rc;
-}
-
-
static volatile int g_thread_stop = 0;
static HANDLE g_writeback_thread;
static HANDLE g_writeback_event;