fix including file error in CKFile. update reader -> writer method

This commit is contained in:
2023-09-30 14:24:37 +08:00
parent eedd9bdb55
commit abea66d6f0
8 changed files with 153 additions and 85 deletions

View File

@ -399,7 +399,7 @@ namespace Unvirt::StructFormatter {
fputc('\n', stdout);
fprintf(stdout, "Manager Count: %" PRIuCKDWORD "\nObject Count: %" PRIuCKDWORD "\nMax ID Saved: %" PRIuCKDWORD "\n",
fprintf(stdout, "Manager Count: %" PRIuCKDWORD "\nObject Count: %" PRIuCKDWORD "\nMax ID Saved: %" PRIuCKID "\n",
fileinfo.ManagerCount, fileinfo.ObjectCount, fileinfo.MaxIDSaved
);

View File

@ -9,7 +9,7 @@ namespace Unvirt::Context {
UnvirtContext::UnvirtContext() :
m_Root(), m_Splitter(), m_Help(nullptr),
m_PageLen(10u), m_OrderExit(false),
m_Ctx(nullptr), m_FileReader(nullptr) {
m_Ctx(nullptr), m_FileReader(nullptr), m_IsShallowRead(true) {
// create command root
CmdHelper::CommandRoot* root = &m_Root;
@ -175,6 +175,7 @@ namespace Unvirt::Context {
// delete reader
delete m_FileReader;
m_FileReader = nullptr;
m_IsShallowRead = true;
// clear context
m_Ctx->ClearAll();
}
@ -242,8 +243,10 @@ namespace Unvirt::Context {
LibCmo::CK2::CKERROR err;
if (is_deep) {
err = m_FileReader->DeepLoad(filepath.c_str());
m_IsShallowRead = false;
} else {
err = m_FileReader->ShallowLoad(filepath.c_str());
m_IsShallowRead = true;
}
if (err != LibCmo::CK2::CKERROR::CKERR_OK) {
// fail to load. release all.
@ -277,7 +280,7 @@ namespace Unvirt::Context {
std::string filepath = *amap->Get<CmdHelper::StringArgument::vType>("filepath");
// construct writer from reader
LibCmo::CK2::CKFileWriter writer(m_Ctx, m_FileReader);
LibCmo::CK2::CKFileWriter writer(m_Ctx, m_FileReader, m_IsShallowRead);
// backup current file write mode
// and replace it with reader

View File

@ -55,6 +55,7 @@ namespace Unvirt::Context {
bool m_OrderExit;
LibCmo::CK2::CKContext* m_Ctx;
LibCmo::CK2::CKFileReader* m_FileReader;
bool m_IsShallowRead;
};