Skip to content

Commit

Permalink
UTF-8 encoding
Browse files Browse the repository at this point in the history
  • Loading branch information
nzeemin committed Apr 7, 2024
1 parent 96ba916 commit 79efafa
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 35 deletions.
70 changes: 35 additions & 35 deletions bkdecmd.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// bkdecmd.cpp : This file contains the 'main' function. Program execution begins and ends there.
// bkdecmd.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

#include "pch.h"
Expand Down Expand Up @@ -69,18 +69,18 @@ PARSE_RESULT g_sParseResult;

void PrintWelcome()
{
std::wcout << L"Óòèëèòà ðàáîòû ñ äèñêàìè ÁÊ BKDEcmd íà îñíîâå êîäà BKDE [" << __DATE__ << " " << __TIME__ << "]";
std::wcout << L"Утилита работы с дисками БК BKDEcmd на основе кода BKDE [" << __DATE__ << " " << __TIME__ << "]";
std::wcout << std::endl;
}

void PrintUsage()
{
std::wcout << std::endl << L"Èñïîëüçîâàíèå:" << std::endl
<< L" Êîìàíäû äëÿ ðàáîòû ñ îáðàçàìè äèñêîâ:" << std::endl
<< L" bkdecmd l <ImageFile> - ïîêàçàòü ñîäåðæèìîå êàòàëîãà" << std::endl
<< L" bkdecmd e <ImageFile> <FileName> - èçâëå÷ü ôàéë" << std::endl
<< L" bkdecmd a <ImageFile> <FileName> - äîáàâèòü ôàéë" << std::endl
<< L" bkdecmd d <ImageFile> <FileName> - óäàëèòü ôàéë" << std::endl;
std::wcout << std::endl << L"Использование:" << std::endl
<< L" Команды для работы с образами дисков:" << std::endl
<< L" bkdecmd l <ImageFile> - показать содержимое каталога" << std::endl
<< L" bkdecmd e <ImageFile> <FileName> - извлечь файл" << std::endl
<< L" bkdecmd a <ImageFile> <FileName> - добавить файл" << std::endl
<< L" bkdecmd d <ImageFile> <FileName> - удалить файл" << std::endl;
}


Expand All @@ -92,7 +92,7 @@ bool ParseCommandLine(int argc, wchar_t* argv[])
if (arg[0] == OPTIONCHAR)
{
{
std::wcout << L"Íåèçâåñòíàÿ îïöèÿ: " << arg << std::endl;
std::wcout << L"Неизвестная опция: " << arg << std::endl;
return false;
}
}
Expand All @@ -106,7 +106,7 @@ bool ParseCommandLine(int argc, wchar_t* argv[])
g_sFileName = arg;
else
{
std::wcout << L"Íåèçâåñòíûé ïàðàìåòð: " << arg << std::endl;
std::wcout << L"Неизвестный параметр: " << arg << std::endl;
return false;
}
}
Expand All @@ -115,7 +115,7 @@ bool ParseCommandLine(int argc, wchar_t* argv[])
// Parsed options validation
if (g_sCommand == nullptr)
{
std::wcout << L"Íå óêàçàíà êîìàíäà." << std::endl;
std::wcout << L"Не указана команда." << std::endl;
return false;
}
CommandInfo* pcinfo = nullptr;
Expand All @@ -129,20 +129,20 @@ bool ParseCommandLine(int argc, wchar_t* argv[])
}
if (pcinfo == nullptr)
{
std::wcout << L"Íåèçâåñòíàÿ êîìàíäà: " << g_sCommand << std::endl;
std::wcout << L"Неизвестная команда: " << g_sCommand << std::endl;
return false;
}
g_pCommand = pcinfo;

// More pre-checks based on command requirements
if (g_sImageFileName == nullptr)
{
std::wcout << L"Ôàéë îáðàçà íå óêàçàí." << std::endl;
std::wcout << L"Файл образа не указан." << std::endl;
return false;
}
if ((pcinfo->requirements & CMDR_PARAM_FILENAME) != 0 && g_sFileName == nullptr)
{
std::wcout << L"Îæèäàëîñü èìÿ ôàéëà." << std::endl;
std::wcout << L"Ожидалось имя файла." << std::endl;
return false;
}
//if ((pcinfo->requirements & CMDR_IMAGEFILERW) != 0 && g_diskimage.IsReadOnly())
Expand Down Expand Up @@ -171,36 +171,36 @@ int wmain(int argc, wchar_t* argv[])
return 255;
}

std::wcout << L"Êîìàíäà: " << g_sCommand << std::endl;
std::wcout << L"Îáðàç äèñêà: " << g_sImageFileName << std::endl;
std::wcout << L"Команда: " << g_sCommand << std::endl;
std::wcout << L"Образ диска: " << g_sImageFileName << std::endl;

// Ïîäêëþ÷åíèå ê ôàéëó îáðàçà
// Подключение к файлу образа
g_sParseResult = g_ParserImage.ParseImage(g_sImageFileName, 0);
if (g_sParseResult.imageOSType == IMAGE_TYPE::ERROR_NOIMAGE)
{
std::wcout << L"Êàêàÿ-òî îøèáêà ïðè ÷òåíèè ôàéëà îáðàçà, ëèáî îí ïîâðåæä¸í, ëèáî íåäîñòóïåí ïî ÷òåíèþ, èç-çà áëîêèðîâàíèÿ äðóãîé ïðîãðàììîé." << std::endl;
std::wcout << L"Какая-то ошибка при чтении файла образа, либо он повреждён, либо недоступен по чтению, из-за блокирования другой программой." << std::endl;
return 255;
}
if (g_sParseResult.imageOSType == IMAGE_TYPE::UNKNOWN)
{
std::wcout << L"Íåîïîçíàííàÿ ôàéëîâàÿ ñèñòåìà îáðàçà." << std::endl;
std::wcout << L"Неопознанная файловая система образа." << std::endl;
return 255;
}

// òåïåðü, åñëè îáðàç îïîçíàëñÿ, íàäî ñîçäàòü îáúåêò, ñîîòâåòñòâóþùèé ôàéëîâîé ñèñòåìå
// теперь, если образ опознался, надо создать объект, соответствующий файловой системе
g_BKImage.ClearImgVector();

uint32_t flg = g_BKImage.Open(g_sParseResult);
if (flg == 0)
{
std::wcout << L"Íåäîñòàòî÷íî ïàìÿòè!" << std::endl;
std::wcout << L"Недостаточно памяти!" << std::endl;
return 255;
}

std::wcout << L"Ôîðìàò: " << g_BKImage.GetImgFormatName() << L" ";
std::wcout << L"Ðàçìåð: " << g_BKImage.GetImgSize() << L" ";
//std::wcout << L"Ñâîáîäíî: " << g_BKImage.GetImageFreeSpace() << L" ";
std::wcout << L"Ðåæèì: " << (g_BKImage.GetImageOpenStatus() ? L"RO" : L"RW") << std::endl;
std::wcout << L"Формат: " << g_BKImage.GetImgFormatName() << L" ";
std::wcout << L"Размер: " << g_BKImage.GetImgSize() << L" ";
//std::wcout << L"Свободно: " << g_BKImage.GetImageFreeSpace() << L" ";
std::wcout << L"Режим: " << (g_BKImage.GetImageOpenStatus() ? L"RO" : L"RW") << std::endl;
std::wcout << std::endl;

// Main task
Expand All @@ -219,7 +219,7 @@ int wmain(int argc, wchar_t* argv[])

bool DoDiskList()
{
// ×èòàåì è ïå÷àòàåì ñïèñîê ôàéëîâ â êîðíåâîé ïàïêå
// Читаем и печатаем список файлов в корневой папке
CBKImage::ItemPanePos pp(0, 0);
return g_BKImage.PrintCurrentDir(pp);
}
Expand All @@ -231,39 +231,39 @@ bool DoDiskExtractFile()

bool DoDiskAddFile()
{
// Ïðîâåðÿåì, åñòü ëè ó íàñ òàêîé ôàéë/äèðåêòîðèÿ
if (fs::is_directory(g_sFileName)) // ýòî äèðåêòîðèÿ
// Проверяем, есть ли у нас такой файл/директория
if (fs::is_directory(g_sFileName)) // это директория
{
std::wcout << L"Äîáàâëåíèå äèðåêòîðèé ïîêà íå ðåàëèçîâàíî." << std::endl;
std::wcout << L"Добавление директорий пока не реализовано." << std::endl;
return false;
}
if (!fs::is_regular_file(g_sFileName))
{
std::wcout << L"Äîáàâëÿåìûé ôàéë íå íàéäåí: " << g_sFileName << std::endl;
std::wcout << L"Добавляемый файл не найден: " << g_sFileName << std::endl;
return false;
}

// Ñíà÷àëà ïîèùåì ôàéë/äèðåêòîðèþ ñ òàêèì èìåíåì
// Сначала поищем файл/директорию с таким именем
auto fr = g_BKImage.FindRecordByName(g_sFileName);
if (fr != nullptr)
{
std::wcout << L"Óæå ñóùåñòâóåò ôàéë èëè äèðåêòîðèÿ ñ òàêèì èìåíåì: " << g_sFileName << std::endl;
std::wcout << L"Уже существует файл или директория с таким именем: " << g_sFileName << std::endl;
return false;
}

//TODO: Åñëè ñóùåñòâóþùèé îáúåêò ýòî ôàéë è ìû äîáàâëÿåì ôàéë, ìîæíî ïðåäëàãàòü ïåðåçàïèñàòü
//TODO: Если существующий объект это файл и мы добавляем файл, можно предлагать перезаписать

ADDOP_RESULT ret;
ret = g_BKImage.AddFile(g_sFileName);

if (ret.nError != ADD_ERROR::OK_NOERROR)
{
std::wstring serror = g_AddOpErrorStr[(int)ret.nError];
std::wcout << L"Íå óäàëîñü äîáàâèòü ôàéë, îøèáêà: " << serror << std::endl;
std::wcout << L"Не удалось добавить файл, ошибка: " << serror << std::endl;
return false;
}

std::wcout << L"Ôàéë äîáàâëåí: " << g_sFileName << std::endl;
std::wcout << L"Файл добавлен: " << g_sFileName << std::endl;
return true;
}

Expand Down
1 change: 1 addition & 0 deletions pch.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include <iostream>
#include <iomanip>
#include <string>
#include <cstring>
#include <vector>
#include <filesystem>

Expand Down

0 comments on commit 79efafa

Please sign in to comment.