diff --git a/CreateCargo.cpp b/CreateCargo.cpp index 30f4cb4..0a426e5 100644 --- a/CreateCargo.cpp +++ b/CreateCargo.cpp @@ -75,6 +75,10 @@ bool CreateCargo::Create(const std::string& path, int8_t flag) } GetFilters(filterFile); } + else + { + // Dodaj tu coœ mordo + } // Utworzenie kontenera cargo.open(cargoFile, std::ios::binary); @@ -105,12 +109,15 @@ bool CreateCargo::GetFileList(const std::string& path) { if (CheckIgnorePath(tmpPath)) { - filesList.push_back(PathToUnixLike(tmpPath)); + PathConf pc; + pc.path = PathToUnixLike(tmpPath); + pc.parameter = methodFlags; + filesPaths.push_back(pc); } } } - return filesList.size() > 0 ? true : false; + return filesPaths.size() > 0 ? true : false; } //----------------------------------------------------------------------------- @@ -158,40 +165,36 @@ CargoHead CreateCargo::CreateCargoHead(const uint32_t& filesLen, const uint64_t& //----------------------------------------------------------------------------- // Sprawdza czy plik znajduje siê na liœcie //----------------------------------------------------------------------------- -uint8_t CreateCargo::CheckFileOnTheList(const std::string& path, std::vector& input, std::vector& output) +void CreateCargo::computingBytes(const int8_t& flag, std::vector& input, std::vector& output) { //Flaga aktywna sprawdza czy plik jest na liœcie. Jeœli jest to zwraca surowedane //Przeciwnie kompresuje dane CompressingManager cm; // Kompresja - if (methodFlags == 1) + if (flag == 1) { std::cout << "COMPRESSING" << std::endl; output = cm.compress(input); - return 1; } // Szyfrowanie - if (methodFlags == 2) + if (flag == 2) { std::cout << "ENCRYPTION" << std::endl; output = crypt.encrypt(input); - return 2; } // Kompresja i szyfrowanie - if (methodFlags == 3) + if (flag == 3) { std::cout << "ZIP ENC" << std::endl; output = crypt.encrypt(cm.compress(input)); - return 3; } // Zwraca surowe dane std::cout << "RAW" << std::endl; output = std::move(input); - return 0; } //----------------------------------------------------------------------------- @@ -203,7 +206,7 @@ std::vector CreateCargo::ComputingHeadFiles() CargoHead cargoHead = CreateCargoHead(0, 0); offset += cargoHead.signature.length() + sizeof(cargoHead.version) + sizeof(cargoHead.files) + sizeof(cargoHead.table); - //Zapisanie TMP nag³owka do pliku + //Zapisanie tymczasowego nag³owka jako rezerwacja miejsca cargo.write(cargoHead.signature.data(), cargoHead.signature.length()); cargo.write(reinterpret_cast(&cargoHead.version), sizeof(cargoHead.version)); cargo.write(reinterpret_cast(&cargoHead.files), sizeof(cargoHead.files)); @@ -211,11 +214,11 @@ std::vector CreateCargo::ComputingHeadFiles() std::vector filesTable; - //Tworzenie nag³ówków plików - for (const auto& file : filesList) + //Tworzenie nag³ówków plików jednoczeœnie zapisywanie plików + for (const auto& file : filesPaths) { - std::string path = PathToUnixLike(RemoveStartPath(file)); - std::ifstream f(file, std::ios::binary | std::ios::ate); + std::string path = PathToUnixLike(RemoveStartPath(file.path)); + std::ifstream f(file.path, std::ios::binary | std::ios::ate); //Obliczanie rozmiaru pliku size_t size = f.tellg(); @@ -231,7 +234,7 @@ std::vector CreateCargo::ComputingHeadFiles() //Kompresjia std::vector pakBuffer; - uint8_t method = CheckFileOnTheList(path, buffer, pakBuffer); + computingBytes(file.parameter, buffer, pakBuffer); FilesTable ft; ft.nameFile = path; @@ -239,7 +242,7 @@ std::vector CreateCargo::ComputingHeadFiles() ft.hashName = fnv64(path); ft.offset = offset; ft.size = pakBuffer.size(); - ft.flag = method; + ft.flag = file.parameter; ft.crc = crc; cargo.write(reinterpret_cast(pakBuffer.data()), pakBuffer.size()); @@ -435,7 +438,7 @@ bool CreateCargo::WriteCargo() { std::cout << "Packing files..." << std::endl; - uint32_t filesLen = filesList.size(); + uint32_t filesLen = filesPaths.size(); //Przygotowanie nag³ówków plików i przetworzenie danych std::vector filesHead = ComputingHeadFiles(); @@ -458,7 +461,7 @@ bool CreateCargo::WriteCargo() cargo.write(reinterpret_cast(&head.offset), sizeof(head.offset)); cargo.write(reinterpret_cast(&head.size), sizeof(head.size)); cargo.write(reinterpret_cast(&head.crc), sizeof(head.crc)); - cargo.write(reinterpret_cast(&head.isZip), sizeof(head.isZip)); + cargo.write(reinterpret_cast(&head.flag), sizeof(head.flag)); } //Cofnij siê na pocz¹tek pliku diff --git a/CreateCargo.h b/CreateCargo.h index f17100f..18f8d6c 100644 --- a/CreateCargo.h +++ b/CreateCargo.h @@ -34,7 +34,6 @@ #include #include "DataStruct.h" -#include "Txtpp.h" #include "CompressingManager.h" #include "EncryptionManager.h" @@ -118,7 +117,7 @@ private: void GetFilters(const std::string&); // Sprawdza czy plik znajduje siê na liœcie - uint8_t CheckFileOnTheList(const std::string&, std::vector&, std::vector&); + void computingBytes(const int8_t&, std::vector&, std::vector&); // Kasowanie z listy plików ignorow bool CheckIgnorePath(const std::string&); diff --git a/CreateCargoEX.h b/CreateCargoEX.h index 08f2480..1d3049d 100644 --- a/CreateCargoEX.h +++ b/CreateCargoEX.h @@ -1,5 +1,8 @@ #pragma once class CreateCargoEX { +public: + CreateCargoEX(); + ~CreateCargoEX() = default; }; diff --git a/ExtractCargo.cpp b/ExtractCargo.cpp index cdc4907..bf4743b 100644 --- a/ExtractCargo.cpp +++ b/ExtractCargo.cpp @@ -45,6 +45,8 @@ bool ExtractCargo::Extract(const std::string& cFile) { cargoFileName = cFile; + std::cout << "START EXTRACT " << cFile << std::endl; + //SprawdŸ czy plik istnieje if (!std::filesystem::exists(cargoFileName)) { @@ -136,7 +138,7 @@ bool ExtractCargo::HashValid(const std::vector& data, const uint64_t& crc) void ExtractCargo::LoadFilesTable() { cargoFile.seekg(tablePosition); - + std::cout << "TU TABLICA" << std::endl; for (uint32_t i = 0; i < filesLen; ++i) { FilesTable fhTmp; @@ -146,6 +148,8 @@ void ExtractCargo::LoadFilesTable() cargoFile.read(nameBuffor.data(), fhTmp.nameLen); fhTmp.nameFile = std::string(nameBuffor.begin(), nameBuffor.end()); + std::cout << fhTmp.nameFile << std::endl; + cargoFile.read(reinterpret_cast(&fhTmp.hashName), sizeof(fhTmp.hashName)); cargoFile.read(reinterpret_cast(&fhTmp.offset), sizeof(fhTmp.offset)); cargoFile.read(reinterpret_cast(&fhTmp.size), sizeof(fhTmp.size)); @@ -167,6 +171,8 @@ void ExtractCargo::ExtractingFilesFromCargo() { std::filesystem::path dir = cargoFileName.stem() / fh.nameFile; CreateDirections(dir); + std::cout << "TU EXTRAT" << std::endl; + std::cout << dir << std::endl; std::ofstream file(dir, std::ios::binary); cargoFile.seekg(fh.offset); @@ -174,7 +180,7 @@ void ExtractCargo::ExtractingFilesFromCargo() cargoFile.read(buffor.data(), fh.size); - std::vector rawBuffor = fh.flag ? cm.decompress(buffor) : eman.decrypt(buffor); + std::vector rawBuffor = fh.flag ? cm.decompress(buffor) : buffor; if (!HashValid(rawBuffor, fh.crc)) { diff --git a/Txtpp.h b/Txtpp.h deleted file mode 100644 index 70940bb..0000000 --- a/Txtpp.h +++ /dev/null @@ -1,174 +0,0 @@ -/* - * This file is part of VoidArchiveTool. - * - * Copyright (C) 2025 Yanczi - * - * Void Archive Toolis free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - - - -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -class Txtpp { -public: - Txtpp(const std::string& path = "") - { - if (path != "") - { - Load(path); - } - } - - ~Txtpp() - { - if (file.is_open()) - { - file.close(); - } - } - - bool Load(const std::string& path) - { - if (!std::filesystem::exists(path)) - { - return false; - } - - file.open(path); - - return file.is_open(); - } - - void Close() - { - file.close(); - } - - std::vector Get(const std::string& key) - { - std::vector tmp; - Parse(key, tmp); - return tmp; - } - - template - T getValue(const std::string& key, const std::string& val) - { - std::vector tmp; - Parse(key, tmp); - - for (const auto& line : tmp) - { - std::string cleanLine = RemoveSpaces(line); - std::string t; - std::string v; - - bool tv = false; - - for (const char& c : cleanLine) - { - if (c != ":") {tv = true;} - - if (!tv) { t += c; } - else { v += c; } - } - } - - return tmp; - } - -private: - const char sectionStart = '{'; - const char sectionEnd = '}'; - - std::ifstream file; - - //----------------------------------------------------------------------------- - // Wyszukiwanie danych po kluczu - //----------------------------------------------------------------------------- - void Parse(const std::string& key, std::vector& data) - { - std::string fullkey = sectionStart + key + sectionEnd; - std::string line; - bool wr = false; - - file.clear(); - file.seekg(std::ios::beg); - - while (getline(file, line)) - { - std::string tmp = RemoveSpaces(line); - if (tmp != "") - { - if (CheckKey(tmp)) - { - wr = UpperString(tmp) == fullkey ? true : false; - } - else - { - if (wr) { data.push_back(tmp); } - } - } - } - } - - //----------------------------------------------------------------------------- - // Usuwa spacje - //----------------------------------------------------------------------------- - std::string RemoveSpaces(std::string _line) - { - std::stringstream ss(_line); - char word; - std::string tmp; - std::string beforeWord = ""; - - while (ss >> word) - { - tmp += word; - } - - return tmp; - } - - //----------------------------------------------------------------------------- - // Sprawdza czy dany ci¹g jest kluczem - //----------------------------------------------------------------------------- - bool CheckKey(std::string key) - { - if (key[0] == sectionStart && key[key.length() - 1]) - { - return true; - } - return false; - } - - //----------------------------------------------------------------------------- - // Zamieñ ca³y ci¹g na du¿e litery - //----------------------------------------------------------------------------- - std::string UpperString(std::string s) { - std::transform(s.begin(), s.end(), s.begin(), - [](unsigned char c) { return static_cast(std::toupper(c)); }); - return s; - } -}; - diff --git a/ViewCargo.cpp b/ViewCargo.cpp index 2a2860e..845766c 100644 --- a/ViewCargo.cpp +++ b/ViewCargo.cpp @@ -143,10 +143,10 @@ void ViewCargo::GetFileList(const std::string& path) cargo.read(reinterpret_cast(&fhTmp.offset), sizeof(fhTmp.offset)); cargo.read(reinterpret_cast(&fhTmp.size), sizeof(fhTmp.size)); cargo.read(reinterpret_cast(&fhTmp.crc), sizeof(fhTmp.crc)); - cargo.read(reinterpret_cast(&fhTmp.isZip), sizeof(fhTmp.isZip)); + cargo.read(reinterpret_cast(&fhTmp.flag), sizeof(fhTmp.flag)); //Tworzenie wierszy tabeli - CreateTableRow(fhTmp.nameFile, fhTmp.isZip, fhTmp.hashName); + CreateTableRow(fhTmp.nameFile, fhTmp.flag, fhTmp.hashName); } cargo.close(); diff --git a/test3/herrsher-of-the-void.png b/test3/herrsher-of-the-void.png new file mode 100644 index 0000000..d6dfc12 Binary files /dev/null and b/test3/herrsher-of-the-void.png differ diff --git a/test3/mus_honkai_space.ogg b/test3/mus_honkai_space.ogg new file mode 100644 index 0000000..136cba5 Binary files /dev/null and b/test3/mus_honkai_space.ogg differ diff --git a/test3/text_file.txt b/test3/text_file.txt new file mode 100644 index 0000000..ed2b7f7 --- /dev/null +++ b/test3/text_file.txt @@ -0,0 +1,251 @@ +Nam strzelać nie kazano. - WstÄ…piÅ‚em na dziaÅ‚o + +I spójrzaÅ‚em na pole; dwieÅ›cie armat grzmiaÅ‚o. + +Artyleryi ruskiej ciÄ…gnÄ… siÄ™ szeregi, + +Prosto, dÅ‚ugo, daleko, jako morza brzegi; + +I widziaÅ‚em ich wodza: przybiegÅ‚, mieczem skinÄ…Å‚ + +I jak ptak jedno skrzydÅ‚o wojska swego zwinÄ…Å‚; + +Wylewa siÄ™ spod skrzydÅ‚a Å›ciÅ›niona piechota + +DÅ‚ugÄ… czarnÄ… kolumnÄ…, jako lawa bÅ‚ota, + +Nasypana iskrami bagnetów. Jak sÄ™py + +Czarne chorÄ…gwie na Å›mierć prowadzÄ… zastÄ™py. + + + +Przeciw nim sterczy biaÅ‚a, wÄ…ska, zaostrzona, + +Jak gÅ‚az bodzÄ…cy morze, reduta Ordona. + +Sześć tylko miaÅ‚a armat; wciąż dymiÄ… i Å›wiecÄ…; + +I nie tyle prÄ™dkich słów gniewne usta miecÄ…, + +Nie tyle przejdzie uczuć przez duszÄ™ w rozpaczy, + +Ile z tych dziaÅ‚ leciaÅ‚o bomb, kul i kartaczy. + +Patrz, tam granat w sam Å›rodek kolumny siÄ™ nurza, + +Jak w fale bryÅ‚a lawy, puÅ‚k dymem zachmurza; + +PÄ™ka Å›ród dymu granat, szyk pod niebo leci + +I ogromna Å‚ysina Å›ród kolumny Å›wieci. + + + +Tam kula, lecÄ…c, z dala grozi, szumi, wyje. + +Ryczy jak byk przed bitwÄ…, miota siÄ™, grunt ryje; - + +Już dopadÅ‚a; jak boa Å›ród kolumn siÄ™ zwija, + +Pali piersiÄ…, rwie zÄ™bem, oddechem zabija. + +Najstraszniejszej nie widać, lecz sÅ‚ychać po dźwiÄ™ku, + +Po waleniu siÄ™ trupów, po ranionych jÄ™ku: + +Gdy kolumnÄ™ od koÅ„ca do koÅ„ca przewierci, + +Jak gdyby Å›rodkiem wojska przeszedÅ‚ anioÅ‚ Å›mierci. + + + +Gdzież jest król, co na rzezie tÅ‚umy te wyprawia? + +Czy dzieli ich odwagÄ™, czy pierÅ› sam nadstawia? + +Nie, on siedzi o pięćset mil na swej stolicy, + +Król wielki, samowÅ‚adnik Å›wiata poÅ‚owicy; + +ZmarszczyÅ‚ brwi, - i tysiÄ…ce kibitek wnet leci; + +PodpisaÅ‚, - tysiÄ…c matek opÅ‚akuje dzieci; + +SkinÄ…Å‚, - padajÄ… knuty od Niemna do Chiwy. + +Mocarzu, jak Bóg silny, jak szatan zÅ‚oÅ›liwy, + +Gdy Turków za BaÅ‚kanem twoje straszÄ… spiże, + +Gdy poselstwo paryskie twoje stopy liże, - + +Warszawa jedna twojej mocy siÄ™ urÄ…ga, + +Podnosi na ciÄ™ rÄ™kÄ™ i koronÄ™ Å›ciÄ…ga, + +KoronÄ™ Kazimierzów, Chrobrych z twojej gÅ‚owy, + +BoÅ› jÄ… ukradÅ‚ i skrwawiÅ‚, synu Wasilowy! + + + +Car dziwi siÄ™ - ze strachu. drzÄ… Petersburczany, + +Car gniewa siÄ™ - ze strachu mrÄ… jego dworzany; + +Ale sypiÄ… siÄ™ wojska, których Bóg i wiara + +Jest Car. - Car gniewny: umrzem, rozweselim Cara. + +PosÅ‚any wódz kaukaski z siÅ‚ami pół-Å›wiata, + +Wierny, czynny i sprawny - jak knut w rÄ™ku kata. + + + +Ura! ura! Patrz, blisko reduty, już w rowy + +WalÄ… siÄ™, na faszynÄ™ kÅ‚adÄ…c swe tuÅ‚owy; + +Już czerniÄ… siÄ™ na biaÅ‚ych palisadach wałów. + +Jeszcze reduta w Å›rodku, jasna od wystrzałów, + +Czerwieni siÄ™ nad czerniÄ…: jak w Å›rodek mrowiaka + +Wrzucony motyl bÅ‚yska, - mrowie go naciska, - + +ZgasÅ‚ - tak zgasÅ‚a reduta. Czyż ostatnie dziaÅ‚o + +StrÄ…cone z Å‚oża w piasku paszczÄ™ zagrzebaÅ‚o? + +Czy zapaÅ‚ krwiÄ… ostatni bombardyjer zalaÅ‚? + +ZgasnÄ…Å‚ ogieÅ„. - Już Moskal rogatki wywalaÅ‚. + + + +Gdzież rÄ™czna broÅ„? - Ach, dzisiaj pracowaÅ‚a wiÄ™cej + +Niż na wszystkich przeglÄ…dach za wÅ‚adzy książęcej; + +ZgadÅ‚em, dlaczego milczy, - bo nieraz widziaÅ‚em + +GarstkÄ™ naszych walczÄ…cÄ… z Moskali nawaÅ‚em. + +Gdy godzinÄ™ woÅ‚ano dwa sÅ‚owa: pal, nabij; + +Gdy oddechy dym tÅ‚umi, trud ramiona sÅ‚abi; + +A wciąż grzmi rozkaz wodzów, wre żoÅ‚nierza czynność; + +Na koniec bez rozkazu peÅ‚niÄ… swÄ… powinność, + +Na koniec bez rozwagi, bez czucia, pamiÄ™ci, + +Å»oÅ‚nierz jako mÅ‚yn palny nabija - grzmi - krÄ™ci + +BroÅ„ od oka do nogi, od nogi na oko: + +Aż rÄ™ka w Å‚adownicy dÅ‚ugo i głęboko + +SzukaÅ‚a, nie znalazÅ‚a - i żoÅ‚nierz pobladnÄ…Å‚, + +Nie znalazÅ‚szy Å‚adunku, już broniÄ… nie wÅ‚adnÄ…Å‚; + +I uczuÅ‚, że go pali strzelba rozogniona; + +UpuÅ›ciÅ‚ jÄ… i upadÅ‚; - nim dobijÄ…, skona. + +Takem myÅ›liÅ‚, - a w szaniec nieprzyjaciół kupa + +Już Å‚azÅ‚a, jak robactwo na Å›wieżego trupa. + + + +PociemniaÅ‚o mi w oczach - a gdym Å‚zy ocieraÅ‚, + +SÅ‚yszaÅ‚em, że coÅ› do mnie mówiÅ‚ mój JeneraÅ‚. + +On przez lunetÄ™ wspartÄ… na moim ramieniu + +DÅ‚ugo na szturm i szaniec poglÄ…daÅ‚ w milczeniu. + +Na koniec rzekÅ‚; "Stracona". - Spod lunety jego + +Wymknęło siÄ™ Å‚ez kilka, - rzekÅ‚ do mnie: "Kolego, + +Wzrok mÅ‚ody od szkieÅ‚ lepszy; patrzaj, tam na wale, + +Znasz Ordona, czy widzisz, gdzie jest?" - "Jenerale, + +Czy go znam? - Tam staÅ‚ zawsze, to dziaÅ‚o kierowaÅ‚. + +Nie widzÄ™ - znajdÄ™ - dojrzÄ™! - Å›ród dymu siÄ™ schowaÅ‚: + +Lecz Å›ród najgÄ™stszych kłębów dymu ileż razy + +WidziaÅ‚em rÄ™kÄ™ jego, dajÄ…cÄ… rozkazy. - + +WidzÄ™ go znowu, - widzÄ™ rÄ™kÄ™ - bÅ‚yskawicÄ™, + +Wywija, grozi wrogom, trzyma palnÄ… Å›wiécÄ™, + +BiorÄ… go - zginÄ…Å‚ - o nie, - skoczyÅ‚ w dół, - do lochów"! + +"Dobrze - rzecze JeneraÅ‚ - nie odda im prochów". + + + +Tu blask - dym - chwila cicho - i huk jak stu gromów. + +ZaćmiÅ‚o siÄ™ powietrze od ziemi wylomów, + +Harmaty podskoczyÅ‚y i jak wystrzelone + +ToczyÅ‚y siÄ™ na koÅ‚ach - lonty zapalone + +Nie trafiÅ‚y do swoich panew. I dym wionÄ…Å‚ + +Prosto ku nam; i w gÄ™stej chmurze nas ochÅ‚onÄ…Å‚. + +I nie byÅ‚o nic widać prócz granatów blasku, + +I powoli dym rzedniaÅ‚, opadaÅ‚ deszcz piasku. + +SpojrzaÅ‚em na redutÄ™; - waÅ‚y, palisady, + +DziaÅ‚a i naszych garstka, i wrogów gromady; + +Wszystko jako sen znikÅ‚o. - Tylko czarna bryÅ‚a + +Ziemi nieksztaÅ‚tnej leży - rozjemcza mogiÅ‚a. + +Tam i ci, co bronili, -i ci, co siÄ™ wdarli, + +Pierwszy raz pokój szczery i wieczny zawarli. + +Choćby cesarz Moskalom kazaÅ‚ wstać, już dusza + +Moskiewska. tam raz pierwszy, cesarza nie sÅ‚usza. + +Tam zagrzebane tylu set ciaÅ‚a, imiona: + +Dusze gdzie? nie wiem; lecz wiem, gdzie dusza Ordona. + +On bÄ™dzie Patron szaÅ„ców! - Bo dzieÅ‚o zniszczenia + +W dobrej sprawie jest Å›wiÄ™te, Jak dzieÅ‚o tworzenia; + +Bóg wyrzekÅ‚ sÅ‚owo staÅ„ siÄ™, Bóg i zgiÅ„ wyrzecze. + +Kiedy od ludzi wiara i wolność uciecze, + +Kiedy ziemiÄ™ despotyzm i duma szalona + +OblejÄ…, jak Moskale redutÄ™ Ordona - + +KarzÄ…c plemiÄ™ zwyciężców zbrodniami zatrute, + +Bóg wysadzi tÄ™ ziemiÄ™, jak on swÄ… redutÄ™. \ No newline at end of file diff --git a/voidcmd.vcxproj b/voidcmd.vcxproj index 3f10666..e154c39 100644 --- a/voidcmd.vcxproj +++ b/voidcmd.vcxproj @@ -149,7 +149,6 @@ -