Usunięto TUI, Zmieniono strukturę PAK... agan, Rezygnacja z FNV hash jako referencji, Zmieana wartości flag na maski
This commit is contained in:
parent
a84a69cbd6
commit
91aaa279ec
16 changed files with 86 additions and 575 deletions
|
|
@ -38,7 +38,7 @@ CreateCargo::~CreateCargo() {
|
|||
//-----------------------------------------------------------------------------
|
||||
// Punk wejścia do tworzenia archivum
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CreateCargo::Create(const std::string& path, const short& flag)
|
||||
bool CreateCargo::Create(const std::string& path, const uint8_t& flag)
|
||||
{
|
||||
cargoFile = path + "." + extension;
|
||||
catalogPath = path;
|
||||
|
|
@ -88,9 +88,9 @@ bool CreateCargo::Create(const std::string& path, const short& flag)
|
|||
}
|
||||
|
||||
// Zapisywanie klucza szyfrującego
|
||||
if (flag == 2 || flag == 3 || encList.size() > 0)
|
||||
if (flag == FILE_FLAG_ENCRYPT || flag == FILE_FLAG_ZIPENC || encList.size() > 0)
|
||||
{
|
||||
crypt.saveKey(catalogPath, hppKey);
|
||||
eman.saveKey(catalogPath, hppKey);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
@ -119,7 +119,7 @@ bool CreateCargo::GetFileList(const std::string& path)
|
|||
else
|
||||
{
|
||||
PathConf pc;
|
||||
if (methodFlags > -1)
|
||||
if (methodFlags != 0xAB)
|
||||
{
|
||||
pc.path = PathToUnixLike(tmpPath);
|
||||
pc.parameter = methodFlags;
|
||||
|
|
@ -184,9 +184,8 @@ CargoHead CreateCargo::CreateCargoHead(const uint32_t& filesLen, const uint64_t&
|
|||
CargoHead ch;
|
||||
|
||||
ch.signature = signature;
|
||||
ch.version = version;
|
||||
ch.files = filesLen;
|
||||
ch.table = table;
|
||||
ch.files = filesLen;
|
||||
|
||||
return ch;
|
||||
}
|
||||
|
|
@ -194,11 +193,11 @@ CargoHead CreateCargo::CreateCargoHead(const uint32_t& filesLen, const uint64_t&
|
|||
//-----------------------------------------------------------------------------
|
||||
// Sprawdza czy plik znajduje się na liście
|
||||
//-----------------------------------------------------------------------------
|
||||
void CreateCargo::computingBytes(const int8_t& flag, std::vector<char>& input, std::vector<char>& output)
|
||||
void CreateCargo::computingBytes(const uint8_t& flag, std::vector<char>& input, std::vector<char>& output)
|
||||
{
|
||||
//Flaga aktywna sprawdza czy plik jest na liście. Jeśli jest to zwraca surowedane
|
||||
//Przeciwnie kompresuje dane
|
||||
ChunkManager cm(crypt);
|
||||
ChunkManager cm(eman);
|
||||
|
||||
switch (flag)
|
||||
{
|
||||
|
|
@ -214,10 +213,6 @@ void CreateCargo::computingBytes(const int8_t& flag, std::vector<char>& input, s
|
|||
output = cm.chunked(input, true, true);
|
||||
break;
|
||||
|
||||
case FILE_FLAG_RAW:
|
||||
output = cm.chunked(input, false, false);
|
||||
break;
|
||||
|
||||
default:
|
||||
output = std::move(input);
|
||||
break;
|
||||
|
|
@ -231,13 +226,12 @@ std::vector<FilesTable> CreateCargo::ComputingHeadFiles()
|
|||
{
|
||||
//Utwórz header TMP. Zabezpiecza Pierwsze bajty na właściwy nagłówek
|
||||
CargoHead cargoHead = CreateCargoHead(0, 0);
|
||||
offset += cargoHead.signature.length() + sizeof(cargoHead.version) + sizeof(cargoHead.files) + sizeof(cargoHead.table);
|
||||
offset += cargoHead.signature.length() + sizeof(cargoHead.files) + sizeof(cargoHead.table);
|
||||
|
||||
//Zapisanie tymczasowego nagłowka jako rezerwacja miejsca
|
||||
cargo.write(cargoHead.signature.data(), cargoHead.signature.length());
|
||||
cargo.write(reinterpret_cast<const char*>(&cargoHead.version), sizeof(cargoHead.version));
|
||||
cargo.write(reinterpret_cast<const char*>(&cargoHead.files), sizeof(cargoHead.files));
|
||||
cargo.write(reinterpret_cast<const char*>(&cargoHead.table), sizeof(cargoHead.table));
|
||||
cargo.write(reinterpret_cast<const char*>(&cargoHead.files), sizeof(cargoHead.files));
|
||||
|
||||
std::vector<FilesTable> filesTable;
|
||||
|
||||
|
|
@ -269,13 +263,14 @@ std::vector<FilesTable> CreateCargo::ComputingHeadFiles()
|
|||
std::vector<char> pakBuffer;
|
||||
computingBytes(file.parameter, buffer, pakBuffer);
|
||||
|
||||
std::cout << static_cast<int>(file.parameter) << std::endl;
|
||||
|
||||
FilesTable ft;
|
||||
ft.nameFile = path;
|
||||
ft.nameLen = path.length();
|
||||
ft.hashName = fnv64(path);
|
||||
ft.offset = offset;
|
||||
ft.size = pakBuffer.size();
|
||||
ft.flag = static_cast<int8_t>(file.parameter);
|
||||
ft.flag = file.parameter;
|
||||
ft.crc = crc;
|
||||
|
||||
cargo.write(reinterpret_cast<const char*>(pakBuffer.data()), pakBuffer.size());
|
||||
|
|
@ -358,24 +353,6 @@ std::string CreateCargo::UpperString(std::string s) {
|
|||
return s;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Wygenerój FNV-1a HASH
|
||||
//-----------------------------------------------------------------------------
|
||||
uint64_t CreateCargo::fnv64(const std::string& data)
|
||||
{
|
||||
const uint64_t fnvOffset = 14695981039346656037u;
|
||||
const uint64_t fnvPrime = 1099511628211u;
|
||||
|
||||
uint64_t hash = fnvOffset;
|
||||
for (unsigned char c : data)
|
||||
{
|
||||
hash ^= c;
|
||||
hash *= fnvPrime;
|
||||
}
|
||||
|
||||
return hash;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Trworzenie archiwum
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -402,7 +379,6 @@ bool CreateCargo::WriteCargo()
|
|||
cargo.write(reinterpret_cast<const char*>(&head.nameLen), sizeof(head.nameLen));
|
||||
cargo.write(head.nameFile.data(), head.nameLen);
|
||||
|
||||
cargo.write(reinterpret_cast<const char*>(&head.hashName), sizeof(head.hashName));
|
||||
cargo.write(reinterpret_cast<const char*>(&head.offset), sizeof(head.offset));
|
||||
cargo.write(reinterpret_cast<const char*>(&head.size), sizeof(head.size));
|
||||
cargo.write(reinterpret_cast<const char*>(&head.crc), sizeof(head.crc));
|
||||
|
|
@ -417,9 +393,8 @@ bool CreateCargo::WriteCargo()
|
|||
|
||||
//Nadpisz tymczasowy nagłówek
|
||||
cargo.write(cargoHead.signature.data(), cargoHead.signature.length());
|
||||
cargo.write(reinterpret_cast<const char*>(&cargoHead.version), sizeof(cargoHead.version));
|
||||
cargo.write(reinterpret_cast<const char*>(&cargoHead.files), sizeof(cargoHead.files));
|
||||
cargo.write(reinterpret_cast<const char*>(&cargoHead.table), sizeof(cargoHead.table));
|
||||
cargo.write(reinterpret_cast<const char*>(&cargoHead.files), sizeof(cargoHead.files));
|
||||
|
||||
cargo.close();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue