From 5310d4f27c4b807604fc703c70f9735f833ef089 Mon Sep 17 00:00:00 2001 From: yanczi Date: Tue, 25 Nov 2025 18:04:24 +0100 Subject: [PATCH] =?UTF-8?q?Dodano=20ograniczenie=20kt=C3=B3re=20pomija=20p?= =?UTF-8?q?liki=20wi=C4=99ksze=20ni=C5=BC=202GB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CreateCargo.cpp | 48 ++++++++++++++++++++++++++++-------------------- CreateCargo.h | 3 +++ DataStruct.h | 2 +- 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/CreateCargo.cpp b/CreateCargo.cpp index 845a915..bad0dc7 100644 --- a/CreateCargo.cpp +++ b/CreateCargo.cpp @@ -243,32 +243,40 @@ std::vector CreateCargo::ComputingHeadFiles() size_t size = f.tellg(); f.seekg(0, std::ios::beg); - //Wczytanie pliku do pamięci - std::vector buffer(size); - f.read(buffer.data(), size); - f.close(); + if (size > MAX_FILE_SIZE) + { + std::cerr << path << " is too large. It exceeds 2GB!" << std::endl; + } + else + { + //Wczytanie pliku do pamięci + std::vector buffer(size); + f.read(buffer.data(), size); + f.close(); - //Tworzenie hashu CRC - const uint64_t crc = XXH64(buffer.data(), buffer.size(), VERSION); + //Tworzenie hashu CRC + const uint64_t crc = XXH64(buffer.data(), buffer.size(), VERSION); - //Kompresjia - std::vector pakBuffer; - computingBytes(file.parameter, buffer, pakBuffer); + //Kompresjia + std::vector pakBuffer; + computingBytes(file.parameter, buffer, pakBuffer); - FilesTable ft; - ft.nameFile = path; - ft.nameLen = path.length(); - ft.hashName = fnv64(path); - ft.offset = offset; - ft.size = pakBuffer.size(); - ft.flag = file.parameter; - ft.crc = crc; + FilesTable ft; + ft.nameFile = path; + ft.nameLen = path.length(); + ft.hashName = fnv64(path); + ft.offset = offset; + ft.size = pakBuffer.size(); + ft.flag = file.parameter; + ft.crc = crc; - cargo.write(reinterpret_cast(pakBuffer.data()), pakBuffer.size()); + cargo.write(reinterpret_cast(pakBuffer.data()), pakBuffer.size()); - filesTable.push_back(ft); - offset += pakBuffer.size(); + filesTable.push_back(ft); + offset += pakBuffer.size(); + } } + return filesTable; } diff --git a/CreateCargo.h b/CreateCargo.h index e11d253..ddbb0cf 100644 --- a/CreateCargo.h +++ b/CreateCargo.h @@ -87,6 +87,9 @@ private: std::ofstream cargo; uint64_t offset; + // Progress + std::atomic progress; + // Tworzenie listy plików do spakowania diff --git a/DataStruct.h b/DataStruct.h index d941faf..db9318a 100644 --- a/DataStruct.h +++ b/DataStruct.h @@ -70,7 +70,7 @@ struct FilesTable std::string nameFile; uint64_t hashName; uint64_t offset; - uint32_t size; + uint64_t size; uint64_t crc; int16_t flag; }; \ No newline at end of file