diff --git a/ChunkManager.h b/ChunkManager.h index dd453c7..006155d 100644 --- a/ChunkManager.h +++ b/ChunkManager.h @@ -37,10 +37,10 @@ public: ChunkManager(EncryptionManager& em); ~ChunkManager(); - // Kompresja danych + // Podzia³ na chunki std::vector chunked(const std::vector&, const bool&, const bool&); - // Dekompresja + // Zcalanie chunków std::vector dechunked(const std::vector&, const bool&, const bool&); private: diff --git a/CreateCargo.cpp b/CreateCargo.cpp index bad0dc7..6d22f0f 100644 --- a/CreateCargo.cpp +++ b/CreateCargo.cpp @@ -38,7 +38,7 @@ CreateCargo::~CreateCargo() { //----------------------------------------------------------------------------- // Punk wejœcia do tworzenia archivum //----------------------------------------------------------------------------- -bool CreateCargo::Create(const std::string& path, const int16_t& flag) +bool CreateCargo::Create(const std::string& path, const short& flag) { cargoFile = path + "." + extension; catalogPath = path; @@ -111,29 +111,37 @@ bool CreateCargo::GetFileList(const std::string& path) else { std::string fileRef = RemoveStartPath(PathToUnixLike(tmpPath)); - PathConf pc; - if (methodFlags > -1) + + if (fileRef.length() > 255) { - pc.path = PathToUnixLike(tmpPath); - pc.parameter = methodFlags; - filesPaths.push_back(pc); + std::cerr << "The file path is too long. It exceeds 255 characters." << std::endl; } else { - if (!FindOnTheList(ignoreList, fileRef) || !CheckFileExtension(fileRef, ignoreList)) + PathConf pc; + if (methodFlags > -1) { - if (FindOnTheList(zipList, fileRef) || CheckFileExtension(fileRef, zipList)) - { - pc.parameter = FindOnTheList(encList, fileRef) || CheckFileExtension(fileRef, encList) ? 3 : 1; - } - else - { - pc.parameter = FindOnTheList(encList, fileRef) || CheckFileExtension(fileRef, encList) ? 2 : 0; - } pc.path = PathToUnixLike(tmpPath); - std::cout << pc.path << " - " << pc.parameter << std::endl; + pc.parameter = methodFlags; filesPaths.push_back(pc); } + else + { + if (!FindOnTheList(ignoreList, fileRef) || !CheckFileExtension(fileRef, ignoreList)) + { + if (FindOnTheList(zipList, fileRef) || CheckFileExtension(fileRef, zipList)) + { + pc.parameter = FindOnTheList(encList, fileRef) || CheckFileExtension(fileRef, encList) ? FILE_FLAG_ZIPENC : FILE_FLAG_COMPRESS; + } + else + { + pc.parameter = FindOnTheList(encList, fileRef) || CheckFileExtension(fileRef, encList) ? FILE_FLAG_ENCRYPT : FILE_FLAG_RAW; + } + pc.path = PathToUnixLike(tmpPath); + std::cout << pc.path << " - " << pc.parameter << std::endl; + filesPaths.push_back(pc); + } + } } } } @@ -186,7 +194,7 @@ CargoHead CreateCargo::CreateCargoHead(const uint32_t& filesLen, const uint64_t& //----------------------------------------------------------------------------- // Sprawdza czy plik znajduje siê na liœcie //----------------------------------------------------------------------------- -void CreateCargo::computingBytes(const int16_t& flag, 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 @@ -194,19 +202,19 @@ void CreateCargo::computingBytes(const int16_t& flag, std::vector& input, switch (flag) { - case 1: + case FILE_FLAG_COMPRESS: output = cm.chunked(input, true, false); break; - case 2: + case FILE_FLAG_ENCRYPT: output = cm.chunked(input, false, true); break; - case 3: + case FILE_FLAG_ZIPENC: output = cm.chunked(input, true, true); break; - case 4: + case FILE_FLAG_RAW: output = cm.chunked(input, false, false); break; @@ -245,7 +253,7 @@ std::vector CreateCargo::ComputingHeadFiles() if (size > MAX_FILE_SIZE) { - std::cerr << path << " is too large. It exceeds 2GB!" << std::endl; + std::cerr << path << " is too large. It exceeds " << MAX_FILE_SIZE / 1024 / 1024 / 1024 << "GB!" << std::endl; } else { @@ -255,7 +263,7 @@ std::vector CreateCargo::ComputingHeadFiles() f.close(); //Tworzenie hashu CRC - const uint64_t crc = XXH64(buffer.data(), buffer.size(), VERSION); + const uint64_t crc = XXH64(buffer.data(), buffer.size(), 0); //Kompresjia std::vector pakBuffer; @@ -267,7 +275,7 @@ std::vector CreateCargo::ComputingHeadFiles() ft.hashName = fnv64(path); ft.offset = offset; ft.size = pakBuffer.size(); - ft.flag = file.parameter; + ft.flag = static_cast(file.parameter); ft.crc = crc; cargo.write(reinterpret_cast(pakBuffer.data()), pakBuffer.size()); diff --git a/CreateCargo.h b/CreateCargo.h index ddbb0cf..c0d1d95 100644 --- a/CreateCargo.h +++ b/CreateCargo.h @@ -47,7 +47,7 @@ struct PathConf { std::string path; - int16_t parameter; + int8_t parameter; }; class CreateCargo { @@ -56,12 +56,12 @@ public: virtual ~CreateCargo(); // Punk wejœcia do tworzenia archivum - bool Create(const std::string&, const int16_t&); + bool Create(const std::string&, const short&); private: const std::string signature; const std::string extension; - const short version; + const signed char version; short methodFlags; @@ -87,10 +87,6 @@ private: std::ofstream cargo; uint64_t offset; - // Progress - std::atomic progress; - - // Tworzenie listy plików do spakowania bool GetFileList(const std::string&); @@ -114,7 +110,7 @@ private: void GetFilters(const std::string&); // Sprawdza czy plik znajduje siê na liœcie - void computingBytes(const int16_t&, std::vector&, std::vector&); + void computingBytes(const int8_t&, std::vector&, std::vector&); // Sprawdzanie rozsze¿eñ plików bool CheckFileExtension(const std::string&, const std::vector&); diff --git a/DataStruct.h b/DataStruct.h index db9318a..2e75f30 100644 --- a/DataStruct.h +++ b/DataStruct.h @@ -25,9 +25,14 @@ #define EXTENSION "pak" #define SIGNATURE "XPAK" -#define SIGNATURE_KEY_FILE 1497713496 // XKEY +#define SIGNATURE_KEY_FILE "XKEY" -#define VERSION 300 +#define VERSION 0x03 + +// Wielkoœæ pojedynczego bloku strumienia +#define CHUNK_STREAM_512KB 524288 // 512KB +#define CHUNK_STREAM_16MB 16777216 // 16MB +#define CHUNK_STREAM_256MB 268435456 // 256MB enum StoreMethod { @@ -38,39 +43,39 @@ enum StoreMethod COMPRESSxENCRYPT = 3 }; +#define FILE_FLAG_RAW 0x00 +#define FILE_FLAG_COMPRESS 0x01 +#define FILE_FLAG_ENCRYPT 0x02 +#define FILE_FLAG_ZIPENC 0x03 +#define FILE_FLAG_CHUNK 0x04 + //Prgoram title #define PROGRAM_TITLE "eXtendet PAK" -#define PROGRAM_VERSION "v1.3" +#define PROGRAM_VERSION "v0.4" #define PROGRAM_AUTHOR "Yanczi" -#define PROGRAM_COMPILING "16 November 2025" +#define PROGRAM_COMPILING "12 December 2025" #define PROGRAM_LICENSE "GNU LGPL v3" //Limity -#define MAX_FILE_SIZE 2147483648 // 2GB +#define MAX_FILE_SIZE 8589934592 // 8GB #define MAX_PAK_SIZE 8796093022208 // 8TB -// Metody zapisania pliku -#define RAW_FILE 0 -#define ZIP_FILE 1 -#define CRYPT_FILE 2 -#define CRYPT_ZIP 3 - struct CargoHead { std::string signature; - int16_t version; + int8_t version; uint32_t files; uint64_t table; }; struct FilesTable { - int16_t nameLen; + uint8_t nameLen; std::string nameFile; uint64_t hashName; uint64_t offset; uint64_t size; uint64_t crc; - int16_t flag; + int8_t flag; }; \ No newline at end of file diff --git a/EncryptionManager.cpp b/EncryptionManager.cpp index 32f533d..832d6e5 100644 --- a/EncryptionManager.cpp +++ b/EncryptionManager.cpp @@ -67,8 +67,8 @@ void EncryptionManager::generateKeys() void EncryptionManager::saveKey(const std::string& path, bool hpp) { - const int sig = SIGNATURE_KEY_FILE; - const short ver = VERSION; + const std::string sig = SIGNATURE_KEY_FILE; + const int8_t ver = VERSION; // Wygeneruj time stamp std::time_t now = std::time(nullptr); @@ -84,7 +84,7 @@ void EncryptionManager::saveKey(const std::string& path, bool hpp) std::ofstream file(path + ".key", std::ios::binary); if (!file) { std::cout << "Failed to save encryption key to file" << std::endl; } - file.write(reinterpret_cast(&sig), sizeof(sig)); + file.write(sig.data(), sig.length()); file.write(reinterpret_cast(&ver), sizeof(ver)); file.write(reinterpret_cast(&time), sizeof(time)); file.write(reinterpret_cast(keyVec.data()), keyVec.size()); @@ -138,16 +138,17 @@ void EncryptionManager::loadKey(const std::string& path) { std::ifstream file(path + ".key", std::ios::binary); - int sig; - short ver; + const std::string signature = SIGNATURE_KEY_FILE; + std::vector sig(signature.size()); + int8_t ver; int time; // Wczytaj - file.read(reinterpret_cast(&sig), sizeof(sig)); + file.read(sig.data(), sig.size()); file.read(reinterpret_cast(&ver), sizeof(ver)); // SprawdŸ czy plik klucza jest poprawny - if (sig != SIGNATURE_KEY_FILE || ver != VERSION) + if (std::string(sig.begin(), sig.end()) != signature || ver != VERSION) { throw std::runtime_error("Invalid key file!"); } diff --git a/ExtractCargo.cpp b/ExtractCargo.cpp index 4b3e0be..c5ca9d0 100644 --- a/ExtractCargo.cpp +++ b/ExtractCargo.cpp @@ -89,7 +89,7 @@ bool ExtractCargo::Extract(const std::string& cFile) bool ExtractCargo::CheckCargoFile() { std::vector magic(signature.size()); - short cargoVer = 0; + int8_t cargoVer = 0; if (!cargoFile.is_open()) { @@ -124,7 +124,7 @@ bool ExtractCargo::CheckCargoFile() //----------------------------------------------------------------------------- bool ExtractCargo::HashValid(const std::vector& data, const uint64_t& crc) { - uint64_t actualCrc = XXH64(data.data(), data.size(), VERSION); + uint64_t actualCrc = XXH64(data.data(), data.size(), 0); if (actualCrc != crc) { @@ -137,25 +137,25 @@ bool ExtractCargo::HashValid(const std::vector& data, const uint64_t& crc) //----------------------------------------------------------------------------- // Magiczna funkcja do dekompresji i deszyfracji danych //----------------------------------------------------------------------------- -void ExtractCargo::computingBytes(const std::vector& input, std::vector& output, const int16_t& flag) +void ExtractCargo::computingBytes(const std::vector& input, std::vector& output, const int8_t& flag) { ChunkManager cm(eman); switch (flag) { - case 1: + case FILE_FLAG_COMPRESS: output = cm.dechunked(input, true, false); break; - case 2: + case FILE_FLAG_ENCRYPT: output = cm.dechunked(input, false, true); break; - case 3: + case FILE_FLAG_ZIPENC: output = cm.dechunked(input, true, true); break; - case 4: + case FILE_FLAG_CHUNK: output = cm.dechunked(input, false, false); break; diff --git a/ExtractCargo.h b/ExtractCargo.h index 0681494..f04effb 100644 --- a/ExtractCargo.h +++ b/ExtractCargo.h @@ -49,7 +49,7 @@ private: uint64_t tablePosition; int filesHeadsOffset; - const short version; + const int8_t version; const std::string signature; std::vector filesHeads; @@ -76,6 +76,6 @@ private: void CreateDirections(std::filesystem::path); // Magiczna funkcja do dekompresji i deszyfracji danych - void computingBytes(const std::vector&, std::vector&, const int16_t&); + void computingBytes(const std::vector&, std::vector&, const int8_t&); }; diff --git a/ViewCargo.cpp b/ViewCargo.cpp index d5a0df2..6dcdbd2 100644 --- a/ViewCargo.cpp +++ b/ViewCargo.cpp @@ -70,7 +70,7 @@ bool ViewCargo::View(const std::string& path) bool ViewCargo::CheckCargoFile(const std::string& path) { std::vector magic(signature.length()); - short cargoVer = 0; + int8_t cargoVer = 0; std::ifstream cargo(path, std::ios::binary); @@ -146,7 +146,7 @@ void ViewCargo::GetFileList(const std::string& path) //----------------------------------------------------------------------------- // Generowanie wierszy do tabeli //----------------------------------------------------------------------------- -void ViewCargo::CreateTableRow(const std::string& file, const uint8_t& zip, const uint64_t& hash) +void ViewCargo::CreateTableRow(const std::string& file, const uint8_t& flag, const uint64_t& hash) { //Zamiania crc liczbowej na hex string std::stringstream ss; @@ -161,19 +161,19 @@ void ViewCargo::CreateTableRow(const std::string& file, const uint8_t& zip, cons ftxui::Element eEnc; // Ustawianie checkboxów - switch (zip) + switch (flag) { - case 1: + case FILE_FLAG_COMPRESS: //eZip = ftxui::text(" [x] ") | ftxui::color(ftxui::Color::Cyan); //eEnc = ftxui::text(" [ ] ") | ftxui::color(ftxui::Color::White); tmpList[0] = "[x]"; break; - case 2: + case FILE_FLAG_ENCRYPT: tmpList[1] = "[x]"; break; - case 3: + case FILE_FLAG_ZIPENC: tmpList[0] = "[x]"; tmpList[1] = "[x]"; break; diff --git a/testx2/herrsher-of-the-void.png b/testx2/herrsher-of-the-void.png new file mode 100644 index 0000000..d6dfc12 Binary files /dev/null and b/testx2/herrsher-of-the-void.png differ diff --git a/testx2/herrsher-of-the-void.tga b/testx2/herrsher-of-the-void.tga new file mode 100644 index 0000000..8a60e54 Binary files /dev/null and b/testx2/herrsher-of-the-void.tga differ diff --git a/testx2/mus_honkai_space.ogg b/testx2/mus_honkai_space.ogg new file mode 100644 index 0000000..136cba5 Binary files /dev/null and b/testx2/mus_honkai_space.ogg differ diff --git a/testx2/text_file.txt b/testx2/text_file.txt new file mode 100644 index 0000000..ed2b7f7 --- /dev/null +++ b/testx2/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.cpp b/voidcmd.cpp index 35e3644..ba0e200 100644 --- a/voidcmd.cpp +++ b/voidcmd.cpp @@ -110,7 +110,7 @@ int main(int argc, char* argv[]) { if (!EmptyPath(path)) { return 1; } - if (!cargo.Create(path, 1)) + if (!cargo.Create(path, 0x01)) { return 1; } @@ -120,7 +120,7 @@ int main(int argc, char* argv[]) { if (arg == "-r" && i + 1 < argc) { path = argv[i + 1]; - if (!cargo.Create(path, 0)) + if (!cargo.Create(path, 0x00)) { return 1; } @@ -130,7 +130,7 @@ int main(int argc, char* argv[]) { if (arg == "-e" && i + 1 < argc) { path = argv[i + 1]; - if (!cargo.Create(path, 2)) + if (!cargo.Create(path, 0x02)) { return 1; } @@ -140,7 +140,7 @@ int main(int argc, char* argv[]) { if (arg == "-s" && i + 1 < argc) { path = argv[i + 1]; - if (!cargo.Create(path, 3)) + if (!cargo.Create(path, 0x03)) { return 1; } @@ -151,7 +151,7 @@ int main(int argc, char* argv[]) { { path = argv[i + 1]; if (!EmptyPath(path)) { return 1; } - if (!cargo.Create(path, -1)) + if (!cargo.Create(path, 0xFF)) { return 1; }