mirror of https://github.com/AxioDL/nod.git
Added `writeSysFiles` for convience of integration
This commit is contained in:
parent
a7c19799e1
commit
72169e8e77
|
@ -381,6 +381,7 @@ public:
|
||||||
inline const Header& getHeader() const { return m_header; }
|
inline const Header& getHeader() const { return m_header; }
|
||||||
inline const BI2Header& getBI2() const { return m_bi2Header; }
|
inline const BI2Header& getBI2() const { return m_bi2Header; }
|
||||||
virtual bool extractCryptoFiles(const SystemString& path, const ExtractionContext& ctx) const { return true; }
|
virtual bool extractCryptoFiles(const SystemString& path, const ExtractionContext& ctx) const { return true; }
|
||||||
|
bool extractSysFiles(const SystemString& path, const ExtractionContext& ctx) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -169,12 +169,6 @@ bool DiscBase::IPartition::extractToDirectory(const SystemString& path,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Mkdir((basePath + _S("/sys")).c_str(), 0755) && errno != EEXIST)
|
|
||||||
{
|
|
||||||
LogModule.report(logvisor::Error, _S("unable to mkdir '%s/sys'"), basePath.c_str());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Extract Disc Files */
|
/* Extract Disc Files */
|
||||||
if (!m_parent.extractDiscHeaderFiles(basePath, ctx))
|
if (!m_parent.extractDiscHeaderFiles(basePath, ctx))
|
||||||
return false;
|
return false;
|
||||||
|
@ -183,6 +177,29 @@ bool DiscBase::IPartition::extractToDirectory(const SystemString& path,
|
||||||
if (!extractCryptoFiles(basePath, ctx))
|
if (!extractCryptoFiles(basePath, ctx))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (!extractSysFiles(basePath, ctx))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
/* Extract Filesystem */
|
||||||
|
SystemString fsPath = basePath + _S("/files");
|
||||||
|
if (Mkdir(fsPath.c_str(), 0755) && errno != EEXIST)
|
||||||
|
{
|
||||||
|
LogModule.report(logvisor::Error, _S("unable to mkdir '%s'"), fsPath.c_str());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_nodes[0].extractToDirectory(fsPath, ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DiscBase::IPartition::extractSysFiles(const SystemString& basePath, const ExtractionContext& ctx) const
|
||||||
|
{
|
||||||
|
if (Mkdir((basePath + _S("/sys")).c_str(), 0755) && errno != EEXIST)
|
||||||
|
{
|
||||||
|
LogModule.report(logvisor::Error, _S("unable to mkdir '%s/sys'"), basePath.c_str());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Sstat theStat;
|
||||||
/* Extract Apploader */
|
/* Extract Apploader */
|
||||||
SystemString apploaderPath = basePath + _S("/sys/apploader.img");
|
SystemString apploaderPath = basePath + _S("/sys/apploader.img");
|
||||||
if (ctx.force || Stat(apploaderPath.c_str(), &theStat))
|
if (ctx.force || Stat(apploaderPath.c_str(), &theStat))
|
||||||
|
@ -234,15 +251,7 @@ bool DiscBase::IPartition::extractToDirectory(const SystemString& path,
|
||||||
m_bi2Header.write(*ws);
|
m_bi2Header.write(*ws);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Extract Filesystem */
|
return true;
|
||||||
SystemString fsPath = basePath + _S("/files");
|
|
||||||
if (Mkdir(fsPath.c_str(), 0755) && errno != EEXIST)
|
|
||||||
{
|
|
||||||
LogModule.report(logvisor::Error, _S("unable to mkdir '%s'"), fsPath.c_str());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return m_nodes[0].extractToDirectory(fsPath, ctx);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t GetInode(const SystemChar* path)
|
static uint64_t GetInode(const SystemChar* path)
|
||||||
|
|
Loading…
Reference in New Issue