summaryrefslogtreecommitdiff
path: root/le/le_file.cpp
diff options
context:
space:
mode:
authorDennis Brentjes <d.brentjes@gmail.com>2016-09-11 22:56:42 +0200
committerDennis Brentjes <d.brentjes@gmail.com>2016-09-11 22:56:42 +0200
commitc6465bd8c6aca006bc7e980d5db08518659bae3c (patch)
treed25a4b697640fd5cb38f000e8b2369525b7ef92b /le/le_file.cpp
parent0828d0bf368d7e0bdc835062aad62bc336047350 (diff)
downloadopenwar-c6465bd8c6aca006bc7e980d5db08518659bae3c.tar.gz
openwar-c6465bd8c6aca006bc7e980d5db08518659bae3c.tar.bz2
openwar-c6465bd8c6aca006bc7e980d5db08518659bae3c.zip
Adds a Pages struct to the le::File which contains all pages.
Diffstat (limited to 'le/le_file.cpp')
-rw-r--r--le/le_file.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/le/le_file.cpp b/le/le_file.cpp
index 55478c8..2e0a9d5 100644
--- a/le/le_file.cpp
+++ b/le/le_file.cpp
@@ -25,6 +25,7 @@ BOOST_FUSION_ADAPT_STRUCT(
(le::EntryTable, entry_table)
(le::FixupPageTable, fixup_page_table)
(le::FixupRecordTable, fixup_record_table)
+ (le::Pages, pages)
)
namespace le {
@@ -50,13 +51,14 @@ File parse_file(std::istream& is) {
auto resource_table = parse_resource_table(is, le_offset + le_h.resource_table_offset, le_h.nr_resource_table_entries);
auto fixup_page_table = parse_fixup_page_table(is, le_offset + le_h.fixup_page_table_offset, le_h.module_nr_of_pages + binparse::Value32(1));
auto fixup_record_table = parse_fixup_record_table(is, le_offset + le_h.fixup_record_table_offset, fixup_page_table);
+ auto pages = parse_pages(is, le_h.data_page_offset, le_h.module_nr_of_pages, le_h.page_size);
return {
mz_h,
unused,
OEM_id,
OEM_info,
- le_offset,
+ le_offset,
dos_exe,
le_h,
object_table,
@@ -66,7 +68,8 @@ File parse_file(std::istream& is) {
resident_name_table,
entry_table,
fixup_page_table,
- fixup_record_table
+ fixup_record_table,
+ pages
};
}