Dodano ograniczenie które pomija pliki większe niż 2GB

This commit is contained in:
yanczi 2025-11-25 18:04:24 +01:00
parent c27949ff3f
commit 5310d4f27c
3 changed files with 32 additions and 21 deletions

View file

@ -243,32 +243,40 @@ std::vector<FilesTable> CreateCargo::ComputingHeadFiles()
size_t size = f.tellg();
f.seekg(0, std::ios::beg);
//Wczytanie pliku do pamiêci
std::vector<char> 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<char> 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<char> pakBuffer;
computingBytes(file.parameter, buffer, pakBuffer);
//Kompresjia
std::vector<char> 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<const char*>(pakBuffer.data()), pakBuffer.size());
cargo.write(reinterpret_cast<const char*>(pakBuffer.data()), pakBuffer.size());
filesTable.push_back(ft);
offset += pakBuffer.size();
filesTable.push_back(ft);
offset += pakBuffer.size();
}
}
return filesTable;
}