summaryrefslogtreecommitdiffstatshomepage
path: root/src/tools/imgtool/modules/rt11.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/imgtool/modules/rt11.cpp')
-rw-r--r--src/tools/imgtool/modules/rt11.cpp33
1 files changed, 17 insertions, 16 deletions
diff --git a/src/tools/imgtool/modules/rt11.cpp b/src/tools/imgtool/modules/rt11.cpp
index 01ab8741dd6..cc425adbdb6 100644
--- a/src/tools/imgtool/modules/rt11.cpp
+++ b/src/tools/imgtool/modules/rt11.cpp
@@ -72,12 +72,13 @@
****************************************************************************/
#include "imgtool.h"
-#include "formats/imageutl.h"
#include "iflopimg.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include "multibyte.h"
+
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
namespace
@@ -384,17 +385,17 @@ static imgtoolerr_t rt11_image_open(imgtool::image &image, imgtool::stream::ptr
if (err)
return err;
- di->directory_start = pick_integer_le(buffer, 0724, 2);
+ di->directory_start = get_u16le(&buffer[0724]);
// real-world images seem to never have a valid checksum, but directory_start is always 6
#if 0
uint16_t tmp, cksum;
tmp = 0;
- cksum = pick_integer_le(buffer, 0776, 2);
+ cksum = get_u16le(&buffer[0776]);
for (int i = 0; i < 510; i+=2)
{
- tmp += pick_integer_le(buffer, i, 2);
+ tmp += get_u16le(&buffer[i]);
}
/* sanity check these values */
@@ -414,9 +415,9 @@ static imgtoolerr_t rt11_image_open(imgtool::image &image, imgtool::stream::ptr
if (err)
return err;
- di->total_segments = pick_integer_le(buffer, 0, 2);
- di->last_segment = pick_integer_le(buffer, 4, 2);
- di->dirent_size = (pick_integer_le(buffer, 6, 2) + 7) * 2;
+ di->total_segments = get_u16le(&buffer[0]);
+ di->last_segment = get_u16le(&buffer[4]);
+ di->dirent_size = (get_u16le(&buffer[6]) + 7) * 2;
di->dirents_per_block = (2 * BLOCK_SIZE - 10) / di->dirent_size;
return IMGTOOLERR_SUCCESS;
@@ -465,7 +466,7 @@ static imgtoolerr_t rt11_enum_seek(imgtool::image &image,
return err;
memcpy(&rt11enum->segment_data[BLOCK_SIZE], buffer, sizeof(buffer));
- rt11enum->data = pick_integer_le(rt11enum->segment_data, 8, 2);
+ rt11enum->data = get_u16le(&rt11enum->segment_data[8]);
}
rt11enum->segment = segment;
}
@@ -490,19 +491,19 @@ static imgtoolerr_t rt11_get_next_dirent(imgtool::image &image,
/* populate the resulting dirent */
offset = (rt11enum->index * di->dirent_size) + 10;
- rt_ent.status = pick_integer_le(rt11enum->segment_data, offset, 2);
+ rt_ent.status = get_u16le(&rt11enum->segment_data[offset]);
memcpy(rt_ent.filename, &rt11enum->segment_data[offset + 2], 6);
- rt_ent.filesize = pick_integer_le(rt11enum->segment_data, offset + 8, 2) * BLOCK_SIZE;
+ rt_ent.filesize = get_u16le(&rt11enum->segment_data[offset + 8]) * BLOCK_SIZE;
rt_ent.data = rt11enum->data;
- rt_ent.time = pick_integer_le(rt11enum->segment_data, offset + 12, 2);
- rt11enum->data += pick_integer_le(rt11enum->segment_data, offset + 8, 2);
+ rt_ent.time = get_u16le(&rt11enum->segment_data[offset + 12]);
+ rt11enum->data += get_u16le(&rt11enum->segment_data[offset + 8]);
/* identify next entry */
next_segment = rt11enum->segment;
next_index = rt11enum->index + 1;
if (next_index >= di->dirents_per_block || (rt_ent.status & E_EOS))
{
- next_segment = pick_integer_le(rt11enum->segment_data, 2, 2);
+ next_segment = get_u16le(&rt11enum->segment_data[2]);
next_index = 0;
}