diff --git a/ChunkManager.h b/ChunkManager.h index c4e1f30..f7f662e 100644 --- a/ChunkManager.h +++ b/ChunkManager.h @@ -18,10 +18,10 @@ public: ChunkManager(EncryptionManager& em); ~ChunkManager(); - // Podzia³ na chunki + // Kompresja danych std::vector chunked(const std::vector&, const bool&, const bool&); - // Zcalanie chunków + // Dekompresja std::vector dechunked(const std::vector&, const bool&, const bool&); private: diff --git a/CreateCargo.cpp b/CreateCargo.cpp index 6d22f0f..bad0dc7 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 short& flag) +bool CreateCargo::Create(const std::string& path, const int16_t& flag) { cargoFile = path + "." + extension; catalogPath = path; @@ -111,36 +111,28 @@ bool CreateCargo::GetFileList(const std::string& path) else { std::string fileRef = RemoveStartPath(PathToUnixLike(tmpPath)); - - if (fileRef.length() > 255) + PathConf pc; + if (methodFlags > -1) { - std::cerr << "The file path is too long. It exceeds 255 characters." << std::endl; + pc.path = PathToUnixLike(tmpPath); + pc.parameter = methodFlags; + filesPaths.push_back(pc); } else { - PathConf pc; - if (methodFlags > -1) + if (!FindOnTheList(ignoreList, fileRef) || !CheckFileExtension(fileRef, ignoreList)) { - pc.path = PathToUnixLike(tmpPath); - pc.parameter = methodFlags; - filesPaths.push_back(pc); - } - else - { - if (!FindOnTheList(ignoreList, fileRef) || !CheckFileExtension(fileRef, ignoreList)) + if (FindOnTheList(zipList, fileRef) || CheckFileExtension(fileRef, zipList)) { - 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); + 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; + filesPaths.push_back(pc); } } } @@ -194,7 +186,7 @@ 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& input, std::vector& output) +void CreateCargo::computingBytes(const int16_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 @@ -202,19 +194,19 @@ void CreateCargo::computingBytes(const int8_t& flag, std::vector& input, s switch (flag) { - case FILE_FLAG_COMPRESS: + case 1: output = cm.chunked(input, true, false); break; - case FILE_FLAG_ENCRYPT: + case 2: output = cm.chunked(input, false, true); break; - case FILE_FLAG_ZIPENC: + case 3: output = cm.chunked(input, true, true); break; - case FILE_FLAG_RAW: + case 4: output = cm.chunked(input, false, false); break; @@ -253,7 +245,7 @@ std::vector CreateCargo::ComputingHeadFiles() if (size > MAX_FILE_SIZE) { - std::cerr << path << " is too large. It exceeds " << MAX_FILE_SIZE / 1024 / 1024 / 1024 << "GB!" << std::endl; + std::cerr << path << " is too large. It exceeds 2GB!" << std::endl; } else { @@ -263,7 +255,7 @@ std::vector CreateCargo::ComputingHeadFiles() f.close(); //Tworzenie hashu CRC - const uint64_t crc = XXH64(buffer.data(), buffer.size(), 0); + const uint64_t crc = XXH64(buffer.data(), buffer.size(), VERSION); //Kompresjia std::vector pakBuffer; @@ -275,7 +267,7 @@ std::vector CreateCargo::ComputingHeadFiles() ft.hashName = fnv64(path); ft.offset = offset; ft.size = pakBuffer.size(); - ft.flag = static_cast(file.parameter); + ft.flag = file.parameter; ft.crc = crc; cargo.write(reinterpret_cast(pakBuffer.data()), pakBuffer.size()); diff --git a/CreateCargo.h b/CreateCargo.h index c0d1d95..ddbb0cf 100644 --- a/CreateCargo.h +++ b/CreateCargo.h @@ -47,7 +47,7 @@ struct PathConf { std::string path; - int8_t parameter; + int16_t parameter; }; class CreateCargo { @@ -56,12 +56,12 @@ public: virtual ~CreateCargo(); // Punk wejœcia do tworzenia archivum - bool Create(const std::string&, const short&); + bool Create(const std::string&, const int16_t&); private: const std::string signature; const std::string extension; - const signed char version; + const short version; short methodFlags; @@ -87,6 +87,10 @@ private: std::ofstream cargo; uint64_t offset; + // Progress + std::atomic progress; + + // Tworzenie listy plików do spakowania bool GetFileList(const std::string&); @@ -110,7 +114,7 @@ private: void GetFilters(const std::string&); // Sprawdza czy plik znajduje siê na liœcie - void computingBytes(const int8_t&, std::vector&, std::vector&); + void computingBytes(const int16_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 2e75f30..db9318a 100644 --- a/DataStruct.h +++ b/DataStruct.h @@ -25,14 +25,9 @@ #define EXTENSION "pak" #define SIGNATURE "XPAK" -#define SIGNATURE_KEY_FILE "XKEY" +#define SIGNATURE_KEY_FILE 1497713496 // XKEY -#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 +#define VERSION 300 enum StoreMethod { @@ -43,39 +38,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 "v0.4" +#define PROGRAM_VERSION "v1.3" #define PROGRAM_AUTHOR "Yanczi" -#define PROGRAM_COMPILING "12 December 2025" +#define PROGRAM_COMPILING "16 November 2025" #define PROGRAM_LICENSE "GNU LGPL v3" //Limity -#define MAX_FILE_SIZE 8589934592 // 8GB +#define MAX_FILE_SIZE 2147483648 // 2GB #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; - int8_t version; + int16_t version; uint32_t files; uint64_t table; }; struct FilesTable { - uint8_t nameLen; + int16_t nameLen; std::string nameFile; uint64_t hashName; uint64_t offset; uint64_t size; uint64_t crc; - int8_t flag; + int16_t flag; }; \ No newline at end of file diff --git a/EncryptionManager.cpp b/EncryptionManager.cpp index 832d6e5..32f533d 100644 --- a/EncryptionManager.cpp +++ b/EncryptionManager.cpp @@ -67,8 +67,8 @@ void EncryptionManager::generateKeys() void EncryptionManager::saveKey(const std::string& path, bool hpp) { - const std::string sig = SIGNATURE_KEY_FILE; - const int8_t ver = VERSION; + const int sig = SIGNATURE_KEY_FILE; + const short 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(sig.data(), sig.length()); + file.write(reinterpret_cast(&sig), sizeof(sig)); file.write(reinterpret_cast(&ver), sizeof(ver)); file.write(reinterpret_cast(&time), sizeof(time)); file.write(reinterpret_cast(keyVec.data()), keyVec.size()); @@ -138,17 +138,16 @@ void EncryptionManager::loadKey(const std::string& path) { std::ifstream file(path + ".key", std::ios::binary); - const std::string signature = SIGNATURE_KEY_FILE; - std::vector sig(signature.size()); - int8_t ver; + int sig; + short ver; int time; // Wczytaj - file.read(sig.data(), sig.size()); + file.read(reinterpret_cast(&sig), sizeof(sig)); file.read(reinterpret_cast(&ver), sizeof(ver)); // SprawdŸ czy plik klucza jest poprawny - if (std::string(sig.begin(), sig.end()) != signature || ver != VERSION) + if (sig != SIGNATURE_KEY_FILE || ver != VERSION) { throw std::runtime_error("Invalid key file!"); } diff --git a/ExtractCargo.cpp b/ExtractCargo.cpp index c5ca9d0..4b3e0be 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()); - int8_t cargoVer = 0; + short 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(), 0); + uint64_t actualCrc = XXH64(data.data(), data.size(), VERSION); 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 int8_t& flag) +void ExtractCargo::computingBytes(const std::vector& input, std::vector& output, const int16_t& flag) { ChunkManager cm(eman); switch (flag) { - case FILE_FLAG_COMPRESS: + case 1: output = cm.dechunked(input, true, false); break; - case FILE_FLAG_ENCRYPT: + case 2: output = cm.dechunked(input, false, true); break; - case FILE_FLAG_ZIPENC: + case 3: output = cm.dechunked(input, true, true); break; - case FILE_FLAG_CHUNK: + case 4: output = cm.dechunked(input, false, false); break; diff --git a/ExtractCargo.h b/ExtractCargo.h index f04effb..0681494 100644 --- a/ExtractCargo.h +++ b/ExtractCargo.h @@ -49,7 +49,7 @@ private: uint64_t tablePosition; int filesHeadsOffset; - const int8_t version; + const short 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 int8_t&); + void computingBytes(const std::vector&, std::vector&, const int16_t&); }; diff --git a/ViewCargo.cpp b/ViewCargo.cpp index 6dcdbd2..d5a0df2 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()); - int8_t cargoVer = 0; + short 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& flag, const uint64_t& hash) +void ViewCargo::CreateTableRow(const std::string& file, const uint8_t& zip, 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& flag, con ftxui::Element eEnc; // Ustawianie checkboxów - switch (flag) + switch (zip) { - case FILE_FLAG_COMPRESS: + case 1: //eZip = ftxui::text(" [x] ") | ftxui::color(ftxui::Color::Cyan); //eEnc = ftxui::text(" [ ] ") | ftxui::color(ftxui::Color::White); tmpList[0] = "[x]"; break; - case FILE_FLAG_ENCRYPT: + case 2: tmpList[1] = "[x]"; break; - case FILE_FLAG_ZIPENC: + case 3: tmpList[0] = "[x]"; tmpList[1] = "[x]"; break; diff --git a/testx2/herrsher-of-the-void.png b/testx2/herrsher-of-the-void.png deleted file mode 100644 index d6dfc12..0000000 Binary files a/testx2/herrsher-of-the-void.png and /dev/null differ diff --git a/testx2/herrsher-of-the-void.tga b/testx2/herrsher-of-the-void.tga deleted file mode 100644 index 8a60e54..0000000 Binary files a/testx2/herrsher-of-the-void.tga and /dev/null differ diff --git a/testx2/mus_honkai_space.ogg b/testx2/mus_honkai_space.ogg deleted file mode 100644 index 136cba5..0000000 Binary files a/testx2/mus_honkai_space.ogg and /dev/null differ diff --git a/testx2/text_file.txt b/testx2/text_file.txt deleted file mode 100644 index ed2b7f7..0000000 --- a/testx2/text_file.txt +++ /dev/null @@ -1,251 +0,0 @@ -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 ba0e200..35e3644 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, 0x01)) + if (!cargo.Create(path, 1)) { 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, 0x00)) + if (!cargo.Create(path, 0)) { 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, 0x02)) + if (!cargo.Create(path, 2)) { 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, 0x03)) + if (!cargo.Create(path, 3)) { 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, 0xFF)) + if (!cargo.Create(path, -1)) { return 1; }