diff options
author | Cameron Cawley | 2020-01-04 15:00:40 +0000 |
---|---|---|
committer | Filippos Karapetis | 2020-01-11 17:34:12 +0200 |
commit | a692905eb273ae8c33ba1351e519b93dbf10f7fd (patch) | |
tree | 8f20261edeb46bcb82c39d03f923c0c1637975dc /common | |
parent | 532f3826021178c3affd9dfc042f6d7b33df00ec (diff) | |
download | scummvm-rg350-a692905eb273ae8c33ba1351e519b93dbf10f7fd.tar.gz scummvm-rg350-a692905eb273ae8c33ba1351e519b93dbf10f7fd.tar.bz2 scummvm-rg350-a692905eb273ae8c33ba1351e519b93dbf10f7fd.zip |
COMMON: Add a function to simplify loading Windows executables
Diffstat (limited to 'common')
-rw-r--r-- | common/winexe.cpp | 23 | ||||
-rw-r--r-- | common/winexe.h | 2 |
2 files changed, 25 insertions, 0 deletions
diff --git a/common/winexe.cpp b/common/winexe.cpp index fd1d565036..ad6ff96505 100644 --- a/common/winexe.cpp +++ b/common/winexe.cpp @@ -24,6 +24,8 @@ #include "common/memstream.h" #include "common/str.h" #include "common/winexe.h" +#include "common/winexe_ne.h" +#include "common/winexe_pe.h" namespace Common { @@ -160,4 +162,25 @@ bool WinResources::loadFromCompressedEXE(const String &fileName) { return loadFromEXE(stream); } + +WinResources *WinResources::createFromEXE(const String &fileName) { + WinResources *exe; + + // First try loading via the NE code + exe = new Common::NEResources(); + if (exe->loadFromEXE(fileName)) { + return exe; + } + delete exe; + + // Then try loading via the PE code + exe = new Common::PEResources(); + if (exe->loadFromEXE(fileName)) { + return exe; + } + delete exe; + + return nullptr; +} + } // End of namespace Common diff --git a/common/winexe.h b/common/winexe.h index cdbc0f6d13..2b81a33261 100644 --- a/common/winexe.h +++ b/common/winexe.h @@ -128,6 +128,8 @@ public: virtual SeekableReadStream *getResource(const WinResourceID &type, const WinResourceID &id, const WinResourceID &lang) { return getResource(type, id); } + + static WinResources *createFromEXE(const String &fileName); }; } // End of namespace Common |