summaryrefslogtreecommitdiffstatshomepage
path: root/src/tools/imgtool/modules/amiga.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/imgtool/modules/amiga.cpp')
-rw-r--r--src/tools/imgtool/modules/amiga.cpp275
1 files changed, 139 insertions, 136 deletions
diff --git a/src/tools/imgtool/modules/amiga.cpp b/src/tools/imgtool/modules/amiga.cpp
index c1c5563012e..fcf1bd779a6 100644
--- a/src/tools/imgtool/modules/amiga.cpp
+++ b/src/tools/imgtool/modules/amiga.cpp
@@ -1,4 +1,4 @@
-// license:GPL-2.0+
+// license:BSD-3-Clause
// copyright-holders:Dirk Best
/****************************************************************************
@@ -13,14 +13,17 @@
Includes
*****************************************************************************/
-
-#include <time.h>
-#include <string.h>
-#include <ctype.h>
-
#include "imgtool.h"
+#include "charconv.h"
#include "iflopimg.h"
-#include "formats/imageutl.h"
+
+#include "corestr.h"
+#include "multibyte.h"
+#include "opresolv.h"
+
+#include <cctype>
+#include <cstring>
+#include <ctime>
@@ -252,15 +255,22 @@ static int intl_toupper(int c)
/* Amiga filename case insensitive string compare */
-static int intl_stricmp(const char *s1, const char *s2)
+static int intl_stricmp(std::string_view s1, std::string_view s2)
{
- for (;;)
+ auto s1_iter = s1.begin();
+ auto s2_iter = s2.begin();
+ while (true)
{
- int c1 = intl_toupper(*s1++);
- int c2 = intl_toupper(*s2++);
+ if (s1.end() == s1_iter)
+ return (s2.end() == s2_iter) ? 0 : -1;
+ else if (s2.end() == s2_iter)
+ return 1;
- if (c1 == 0 || c1 != c2)
- return c1 - c2;
+ const int c1 = intl_toupper(uint8_t(*s1_iter++));
+ const int c2 = intl_toupper(uint8_t(*s2_iter++));
+ const int diff = c1 - c2;
+ if (diff)
+ return diff;
}
}
@@ -388,7 +398,7 @@ static uint32_t block_checksum(uint8_t *buffer, int length)
for (i = 0; i < length/4; i++)
{
- chksum += pick_integer_be(buffer, i*4, 4);
+ chksum += get_u32be(&buffer[i*4]);
}
return -chksum;
@@ -464,7 +474,7 @@ static sec_type get_block_type(imgtool::image &img, int block)
if (ret) return ST_INVALID;
/* return type */
- switch ((int32_t) pick_integer_be(buffer, BSIZE-4, 4))
+ switch (get_s32be(&buffer[BSIZE-4]))
{
case 1: return ST_ROOT;
case 2: return ST_USERDIR;
@@ -488,7 +498,7 @@ static imgtoolerr_t read_bitmap_block(imgtool::image &img, int block, bitmap_blo
if (ret) return ret;
/* fill in data */
- bm->chksum = pick_integer_be(buffer, 0, 4);
+ bm->chksum = get_u32be(&buffer[0]);
copy_integer_array_be(bm->map, (uint32_t *) &buffer[4], MSIZE);
return IMGTOOLERR_SUCCESS;
@@ -502,7 +512,7 @@ static imgtoolerr_t write_bitmap_block(imgtool::image &img, int block, const bit
uint8_t buffer[BSIZE];
/* Setup buffer */
- place_integer_be(buffer, 0, 4, bm->chksum);
+ put_u32be(&buffer[0], bm->chksum);
copy_integer_array_be((uint32_t *) &buffer[4], bm->map, MSIZE);
/* write block */
@@ -513,9 +523,8 @@ static imgtoolerr_t write_bitmap_block(imgtool::image &img, int block, const bit
}
-#ifdef UNUSED_FUNCTION
/* Read a bitmap extended block */
-static imgtoolerr_t read_bitmap_ext_block(imgtool::image *img, int block, bitmap_ext_block *bm)
+[[maybe_unused]] static imgtoolerr_t read_bitmap_ext_block(imgtool::image &img, int block, bitmap_ext_block *bm)
{
imgtoolerr_t ret;
uint8_t buffer[BSIZE];
@@ -526,11 +535,10 @@ static imgtoolerr_t read_bitmap_ext_block(imgtool::image *img, int block, bitmap
/* fill in data */
copy_integer_array_be(bm->map, (uint32_t *) &buffer, MSIZE);
- bm->next = pick_integer_be(buffer, BSIZE-4, 4);
+ bm->next = get_u32be(&buffer[BSIZE-4]);
return IMGTOOLERR_SUCCESS;
}
-#endif
/* Read the root block */
@@ -546,17 +554,17 @@ static imgtoolerr_t read_root_block(imgtool::image &img, root_block *root)
/* copy data to root_block */
memset(root, 0, sizeof(root_block));
- root->ht_size = pick_integer_be(buffer, 12, 4);
- root->chksum = pick_integer_be(buffer, 20, 4);
+ root->ht_size = get_u32be(&buffer[12]);
+ root->chksum = get_u32be(&buffer[20]);
copy_integer_array_be(root->ht, (uint32_t *) &buffer[24], TSIZE);
- root->bm_flag = pick_integer_be(buffer, BSIZE-200, 4);
+ root->bm_flag = get_u32be(&buffer[BSIZE-200]);
copy_integer_array_be(root->bm_pages, (uint32_t *) &buffer[BSIZE-196], 25);
copy_date_be(&root->r, (uint32_t *) &buffer[BSIZE-92]);
- root->name_len = pick_integer_be(buffer, BSIZE-80, 1);
+ root->name_len = buffer[BSIZE-80];
memcpy(root->diskname, &buffer[BSIZE-79], 30);
copy_date_be(&root->v, (uint32_t *) &buffer[BSIZE-40]);
copy_date_be(&root->c, (uint32_t *) &buffer[BSIZE-28]);
- root->extension = pick_integer_be(buffer, BSIZE-8, 4);
+ root->extension = get_u32be(&buffer[BSIZE-8]);
return IMGTOOLERR_SUCCESS;
}
@@ -570,25 +578,25 @@ static imgtoolerr_t write_root_block(imgtool::image &img, const root_block *root
/* Setup buffer */
memset(buffer, 0, BSIZE);
- place_integer_be(buffer, 0, 4, T_HEADER);
- place_integer_be(buffer, 12, 4, root->ht_size);
- place_integer_be(buffer, 20, 4, root->chksum);
+ put_u32be(&buffer[0], T_HEADER);
+ put_u32be(&buffer[12], root->ht_size);
+ put_u32be(&buffer[20], root->chksum);
copy_integer_array_be((uint32_t *) &buffer[24], root->ht, TSIZE);
- place_integer_be(buffer, BSIZE-200, 4, root->bm_flag);
+ put_u32be(&buffer[BSIZE-200], root->bm_flag);
copy_integer_array_be((uint32_t *) &buffer[BSIZE-196], root->bm_pages, 25);
- place_integer_be(buffer, BSIZE-92, 4, root->r.days);
- place_integer_be(buffer, BSIZE-88, 4, root->r.mins);
- place_integer_be(buffer, BSIZE-84, 4, root->r.ticks);
- place_integer_be(buffer, BSIZE-80, 1, root->name_len);
+ put_u32be(&buffer[BSIZE-92], root->r.days);
+ put_u32be(&buffer[BSIZE-88], root->r.mins);
+ put_u32be(&buffer[BSIZE-84], root->r.ticks);
+ buffer[BSIZE-80] = root->name_len;
memcpy(&buffer[BSIZE-79], root->diskname, root->name_len);
- place_integer_be(buffer, BSIZE-40, 4, root->v.days);
- place_integer_be(buffer, BSIZE-36, 4, root->v.mins);
- place_integer_be(buffer, BSIZE-32, 4, root->v.ticks);
- place_integer_be(buffer, BSIZE-28, 4, root->c.days);
- place_integer_be(buffer, BSIZE-24, 4, root->c.mins);
- place_integer_be(buffer, BSIZE-20, 4, root->c.ticks);
- place_integer_be(buffer, BSIZE-8, 4, root->extension);
- place_integer_be(buffer, BSIZE-4, 4, ST_ROOT);
+ put_u32be(&buffer[BSIZE-40], root->v.days);
+ put_u32be(&buffer[BSIZE-36], root->v.mins);
+ put_u32be(&buffer[BSIZE-32], root->v.ticks);
+ put_u32be(&buffer[BSIZE-28], root->c.days);
+ put_u32be(&buffer[BSIZE-24], root->c.mins);
+ put_u32be(&buffer[BSIZE-20], root->c.ticks);
+ put_u32be(&buffer[BSIZE-8], root->extension);
+ put_u32be(&buffer[BSIZE-4], ST_ROOT);
/* write root block to image */
ret = write_block(img, get_total_blocks(img)/2, buffer);
@@ -609,25 +617,25 @@ static imgtoolerr_t read_file_block(imgtool::image &img, int block, file_block *
if (ret) return ret;
/* fill in data */
- fb->header_key = pick_integer_be(buffer, 4, 4);
- fb->high_seq = pick_integer_be(buffer, 8, 4);
- fb->first_data = pick_integer_be(buffer, 16, 4);
- fb->chksum = pick_integer_be(buffer, 20, 4);
+ fb->header_key = get_u32be(&buffer[4]);
+ fb->high_seq = get_u32be(&buffer[8]);
+ fb->first_data = get_u32be(&buffer[16]);
+ fb->chksum = get_u32be(&buffer[20]);
copy_integer_array_be(fb->data_blocks, (uint32_t *) &buffer[24], TSIZE);
- fb->uid = pick_integer_be(buffer, BSIZE-196, 2);
- fb->gid = pick_integer_be(buffer, BSIZE-194, 2);
- fb->protect = pick_integer_be(buffer, BSIZE-192, 4);
- fb->byte_size = pick_integer_be(buffer, BSIZE-188, 4);
- fb->comm_len = pick_integer_be(buffer, BSIZE-184, 1);
+ fb->uid = get_u16be(&buffer[BSIZE-196]);
+ fb->gid = get_u16be(&buffer[BSIZE-194]);
+ fb->protect = get_u32be(&buffer[BSIZE-192]);
+ fb->byte_size = get_u32be(&buffer[BSIZE-188]);
+ fb->comm_len = buffer[BSIZE-184];
memcpy(fb->comment, &buffer[BSIZE-183], 79);
copy_date_be(&fb->date, (uint32_t *) &buffer[BSIZE-92]);
- fb->name_len = pick_integer_be(buffer, BSIZE-80, 1);
- memcpy(fb->filename, (uint32_t *) &buffer[BSIZE-79], 30);
- fb->real_entry = pick_integer_be(buffer, BSIZE-44, 4);
- fb->next_link = pick_integer_be(buffer, BSIZE-40, 4);
- fb->hash_chain = pick_integer_be(buffer, BSIZE-16, 4);
- fb->parent = pick_integer_be(buffer, BSIZE-12, 4);
- fb->extension = pick_integer_be(buffer, BSIZE-8, 4);
+ fb->name_len = buffer[BSIZE-80];
+ memcpy(fb->filename, &buffer[BSIZE-79], 30);
+ fb->real_entry = get_u32be(&buffer[BSIZE-44]);
+ fb->next_link = get_u32be(&buffer[BSIZE-40]);
+ fb->hash_chain = get_u32be(&buffer[BSIZE-16]);
+ fb->parent = get_u32be(&buffer[BSIZE-12]);
+ fb->extension = get_u32be(&buffer[BSIZE-8]);
return IMGTOOLERR_SUCCESS;
}
@@ -643,12 +651,12 @@ static imgtoolerr_t read_file_ext_block(imgtool::image &img, int block, file_ext
if (ret) return ret;
/* fill in data */
- fe->header_key = pick_integer_be(buffer, 4, 4);
- fe->high_seq = pick_integer_be(buffer, 8, 4);
- fe->chksum = pick_integer_be(buffer, 20, 4);
+ fe->header_key = get_u32be(&buffer[4]);
+ fe->high_seq = get_u32be(&buffer[8]);
+ fe->chksum = get_u32be(&buffer[20]);
copy_integer_array_be(fe->data_blocks, (uint32_t *) &buffer[24], TSIZE);
- fe->parent = pick_integer_be(buffer, BSIZE-12, 4);
- fe->extension = pick_integer_be(buffer, BSIZE-8, 4);
+ fe->parent = get_u32be(&buffer[BSIZE-12]);
+ fe->extension = get_u32be(&buffer[BSIZE-8]);
return IMGTOOLERR_SUCCESS;
}
@@ -664,11 +672,11 @@ static imgtoolerr_t read_data_block(imgtool::image &img, int block, data_block *
if (ret) return ret;
/* fill in data */
- d->header_key = pick_integer_be(buffer, 4, 4);
- d->seq_num = pick_integer_be(buffer, 8, 4);
- d->data_size = pick_integer_be(buffer, 12, 4);
- d->next_data = pick_integer_be(buffer, 16, 4);
- d->chksum = pick_integer_be(buffer, 20, 4);
+ d->header_key = get_u32be(&buffer[4]);
+ d->seq_num = get_u32be(&buffer[8]);
+ d->data_size = get_u32be(&buffer[12]);
+ d->next_data = get_u32be(&buffer[16]);
+ d->chksum = get_u32be(&buffer[20]);
memcpy(d->data, &buffer[24], BSIZE-24);
return IMGTOOLERR_SUCCESS;
@@ -686,21 +694,21 @@ static imgtoolerr_t read_dir_block(imgtool::image &img, int block, dir_block *db
if (ret) return ret;
/* fill in data */
- db->header_key = pick_integer_be(buffer, 4, 4);
- db->chksum = pick_integer_be(buffer, 20, 4);
+ db->header_key = get_u32be(&buffer[4]);
+ db->chksum = get_u32be(&buffer[20]);
copy_integer_array_be(db->ht, (uint32_t *) &buffer[24], TSIZE);
- db->uid = pick_integer_be(buffer, BSIZE-196, 2);
- db->gid = pick_integer_be(buffer, BSIZE-194, 2);
- db->protect = pick_integer_be(buffer, BSIZE-192, 4);
- db->comm_len = pick_integer_be(buffer, BSIZE-184, 1);
+ db->uid = get_u16be(&buffer[BSIZE-196]);
+ db->gid = get_u16be(&buffer[BSIZE-194]);
+ db->protect = get_u32be(&buffer[BSIZE-192]);
+ db->comm_len = buffer[BSIZE-184];
memcpy(db->comment, &buffer[BSIZE-183], 79);
copy_date_be(&db->date, (uint32_t *) &buffer[BSIZE-92]);
- db->name_len = pick_integer_be(buffer, BSIZE-80, 1);
+ db->name_len = buffer[BSIZE-80];
memcpy(db->dirname, (uint32_t *) &buffer[BSIZE-79], 30);
- db->next_link = pick_integer_be(buffer, BSIZE-40, 4);
- db->hash_chain = pick_integer_be(buffer, BSIZE-16, 4);
- db->parent = pick_integer_be(buffer, BSIZE-12, 4);
- db->extension = pick_integer_be(buffer, BSIZE-8, 4);
+ db->next_link = get_u32be(&buffer[BSIZE-40]);
+ db->hash_chain = get_u32be(&buffer[BSIZE-16]);
+ db->parent = get_u32be(&buffer[BSIZE-12]);
+ db->extension = get_u32be(&buffer[BSIZE-8]);
return IMGTOOLERR_SUCCESS;
}
@@ -714,25 +722,25 @@ static imgtoolerr_t write_dir_block(imgtool::image &img, int block, const dir_bl
memset(buffer, 0, BSIZE);
/* Copy data */
- place_integer_be(buffer, 0, 4, T_HEADER);
- place_integer_be(buffer, 4, 4, db->header_key);
- place_integer_be(buffer, 20, 4, db->chksum);
+ put_u32be(&buffer[0], T_HEADER);
+ put_u32be(&buffer[4], db->header_key);
+ put_u32be(&buffer[20], db->chksum);
copy_integer_array_be((uint32_t *) &buffer[24], db->ht, TSIZE);
- place_integer_be(buffer, BSIZE-196, 2, db->uid);
- place_integer_be(buffer, BSIZE-194, 2, db->gid);
- place_integer_be(buffer, BSIZE-192, 4, db->protect);
- place_integer_be(buffer, BSIZE-184, 1, db->comm_len);
- memcpy((uint32_t *) &buffer[BSIZE-183], db->comment, db->comm_len);
- place_integer_be(buffer, BSIZE-92, 4, db->date.days);
- place_integer_be(buffer, BSIZE-88, 4, db->date.mins);
- place_integer_be(buffer, BSIZE-84, 4, db->date.ticks);
- place_integer_be(buffer, BSIZE-80, 1, db->name_len);
- memcpy((uint32_t *) &buffer[BSIZE-79], db->dirname, db->name_len);
- place_integer_be(buffer, BSIZE-40, 4, db->next_link);
- place_integer_be(buffer, BSIZE-16, 4, db->hash_chain);
- place_integer_be(buffer, BSIZE-12, 4, db->parent);
- place_integer_be(buffer, BSIZE-8, 4, db->extension);
- place_integer_be(buffer, BSIZE-4, 4, ST_USERDIR);
+ put_u16be(&buffer[BSIZE-196], db->uid);
+ put_u16be(&buffer[BSIZE-194], db->gid);
+ put_u32be(&buffer[BSIZE-192], db->protect);
+ buffer[BSIZE-184] = db->comm_len;
+ memcpy(&buffer[BSIZE-183], db->comment, db->comm_len);
+ put_u32be(&buffer[BSIZE-92], db->date.days);
+ put_u32be(&buffer[BSIZE-88], db->date.mins);
+ put_u32be(&buffer[BSIZE-84], db->date.ticks);
+ buffer[BSIZE-80] = db->name_len;
+ memcpy(&buffer[BSIZE-79], db->dirname, db->name_len);
+ put_u32be(&buffer[BSIZE-40], db->next_link);
+ put_u32be(&buffer[BSIZE-16], db->hash_chain);
+ put_u32be(&buffer[BSIZE-12], db->parent);
+ put_u32be(&buffer[BSIZE-8], db->extension);
+ put_u32be(&buffer[BSIZE-4], ST_USERDIR);
/* Write block to disk */
return write_block(img, block, buffer);
@@ -749,19 +757,19 @@ static imgtoolerr_t read_hardlink_block(imgtool::image &img, int block, hardlink
if (ret) return ret;
/* fill in data */
- hl->header_key = pick_integer_be(buffer, 4, 4);
- hl->chksum = pick_integer_be(buffer, 20, 4);
- hl->protect = pick_integer_be(buffer, BSIZE-192, 4);
- hl->comm_len = pick_integer_be(buffer, BSIZE-184, 1);
+ hl->header_key = get_u32be(&buffer[4]);
+ hl->chksum = get_u32be(&buffer[20]);
+ hl->protect = get_u32be(&buffer[BSIZE-192]);
+ hl->comm_len = buffer[BSIZE-184];
memcpy(hl->comment, &buffer[BSIZE-183], 79);
copy_date_be(&hl->date, (uint32_t *) &buffer[BSIZE-92]);
- hl->name_len = pick_integer_be(buffer, BSIZE-80, 1);
- memcpy(hl->hlname, (uint32_t *) &buffer[BSIZE-79], 30);
- hl->real_entry = pick_integer_be(buffer, BSIZE-44, 4);
- hl->next_link = pick_integer_be(buffer, BSIZE-40, 4);
- hl->hash_chain = pick_integer_be(buffer, BSIZE-16, 4);
- hl->parent = pick_integer_be(buffer, BSIZE-12, 4);
- hl->sec_type = pick_integer_be(buffer, BSIZE-4, 4);
+ hl->name_len = buffer[BSIZE-80];
+ memcpy(hl->hlname, &buffer[BSIZE-79], 30);
+ hl->real_entry = get_u32be(&buffer[BSIZE-44]);
+ hl->next_link = get_u32be(&buffer[BSIZE-40]);
+ hl->hash_chain = get_u32be(&buffer[BSIZE-16]);
+ hl->parent = get_u32be(&buffer[BSIZE-12]);
+ hl->sec_type = get_u32be(&buffer[BSIZE-4]);
return IMGTOOLERR_SUCCESS;
}
@@ -777,17 +785,17 @@ static imgtoolerr_t read_softlink_block(imgtool::image &img, int block, softlink
if (ret) return ret;
/* fill in data */
- sl->header_key = pick_integer_be(buffer, 4, 4);
- sl->chksum = pick_integer_be(buffer, 20, 4);
+ sl->header_key = get_u32be(&buffer[4]);
+ sl->chksum = get_u32be(&buffer[20]);
memcpy(sl->symbolic_name, &buffer[24], BSIZE-224);
- sl->protect = pick_integer_be(buffer, BSIZE-192, 4);
- sl->comm_len = pick_integer_be(buffer, BSIZE-184, 1);
+ sl->protect = get_u32be(&buffer[BSIZE-192]);
+ sl->comm_len = buffer[BSIZE-184];
memcpy(sl->comment, &buffer[BSIZE-183], 79);
copy_date_be(&sl->date, (uint32_t *) &buffer[BSIZE-92]);
- sl->name_len = pick_integer_be(buffer, BSIZE-80, 1);
- memcpy(sl->slname, (uint32_t *) &buffer[BSIZE-79], 30);
- sl->hash_chain = pick_integer_be(buffer, BSIZE-16, 4);
- sl->parent = pick_integer_be(buffer, BSIZE-12, 4);
+ sl->name_len = buffer[BSIZE-80];
+ memcpy(sl->slname, &buffer[BSIZE-79], 30);
+ sl->hash_chain = get_u32be(&buffer[BSIZE-16]);
+ sl->parent = get_u32be(&buffer[BSIZE-12]);
return IMGTOOLERR_SUCCESS;
}
@@ -837,16 +845,14 @@ static int is_intl(imgtool::image &img)
t == DT_FFS_INTL_DIRC) ? true : false);
}
-#ifdef UNUSED_FUNCTION
/* Returns true if the disk uses the directory cache mode */
-static int is_dirc(imgtool::image *img)
+[[maybe_unused]] static int is_dirc(imgtool::image &img)
{
disk_type t = get_disk_type(img);
return ((t == DT_OFS_INTL_DIRC ||
t == DT_FFS_INTL_DIRC) ? true : false);
}
-#endif
static imgtoolerr_t get_hash_table(imgtool::image &img, int block, uint32_t *ht)
{
@@ -907,12 +913,10 @@ static imgtoolerr_t set_hash_table(imgtool::image &img, int block, const uint32_
return IMGTOOLERR_SUCCESS;
}
-#ifdef UNUSED_FUNCTION
-static imgtoolerr_t get_root_hash_table(imgtool::image *img, uint32_t *ht)
+[[maybe_unused]] static imgtoolerr_t get_root_hash_table(imgtool::image &img, uint32_t *ht)
{
return get_hash_table(img, get_total_blocks(img)/2, ht);
}
-#endif
static imgtoolerr_t get_blockname(imgtool::image &img, int block, char *dest)
{
@@ -941,7 +945,7 @@ static imgtoolerr_t get_hash_chain(imgtool::image &img, int block, uint32_t *cha
if (ret) return ret;
/* Get chain value */
- *chain = pick_integer_be(buffer, BSIZE-16, 4);
+ *chain = get_u32be(&buffer[BSIZE-16]);
return IMGTOOLERR_SUCCESS;
}
@@ -957,7 +961,7 @@ static imgtoolerr_t set_hash_chain(imgtool::image &img, int block, uint32_t chai
if (ret) return ret;
/* Copy new hash chain value into it */
- place_integer_be(buffer, BSIZE-16, 4, chain);
+ put_u32be(&buffer[BSIZE-16], chain);
/* Write it back again */
ret = write_block(img, block, buffer);
@@ -974,7 +978,7 @@ static imgtoolerr_t walk_hash_chain(imgtool::image &img, const char *path, int s
char name[31];
/* choose compare function depending on intl mode */
- int (*cmp)(const char *, const char *) = is_intl(img) ? &intl_stricmp : &core_stricmp;
+ int (*cmp)(std::string_view, std::string_view) = is_intl(img) ? &intl_stricmp : &core_stricmp;
/* initialize filenames */
memset(name, 0, sizeof(name));
@@ -1174,11 +1178,11 @@ static imgtoolerr_t fix_chksum(imgtool::image &img, int block, int bitmap)
/* update checksum */
if (bitmap)
{
- place_integer_be(buffer, 0, 4, chksum);
+ put_u32be(&buffer[0], chksum);
}
else
{
- place_integer_be(buffer, 20, 4, chksum);
+ put_u32be(&buffer[20], chksum);
}
/* write back new block data */
@@ -1273,9 +1277,9 @@ static imgtoolerr_t update_block_modified_date(imgtool::image &img, int block)
amiga_setup_time(now, &date);
/* Write new time into block */
- place_integer_be(buffer, BSIZE-92, 4, date.days);
- place_integer_be(buffer, BSIZE-88, 4, date.mins);
- place_integer_be(buffer, BSIZE-84, 4, date.ticks);
+ put_u32be(&buffer[BSIZE-92], date.days);
+ put_u32be(&buffer[BSIZE-88], date.mins);
+ put_u32be(&buffer[BSIZE-84], date.ticks);
/* Write block back to disk */
ret = write_block(img, block, buffer);
@@ -1367,8 +1371,7 @@ static int get_first_bit(uint32_t *array, int size)
}
-#ifdef UNUSED_FUNCTION
-static imgtoolerr_t walk_bitmap_ext_blocks(imgtool::image *img, int start, int *block)
+[[maybe_unused]] static imgtoolerr_t walk_bitmap_ext_blocks(imgtool::image &img, int start, int *block)
{
imgtoolerr_t ret;
bitmap_ext_block bm_ext;
@@ -1400,7 +1403,6 @@ static imgtoolerr_t walk_bitmap_ext_blocks(imgtool::image *img, int start, int *
/* else continue walking the list */
return walk_bitmap_ext_blocks(img, bm_ext.next, block);
}
-#endif
/* Searches for a block marked as free
@@ -1710,7 +1712,7 @@ static imgtoolerr_t write_file_ext_data(imgtool::image &img, int block, int *fil
static imgtoolerr_t clear_file_ext_data(imgtool::image &img, int block, int *filesize)
{
- return walk_file_ext_data(img, block, filesize, NULL, false);
+ return walk_file_ext_data(img, block, filesize, nullptr, false);
}
@@ -1979,6 +1981,7 @@ static imgtoolerr_t amiga_image_nextenum(imgtool::directory &enumeration, imgtoo
case ST_LINKDIR:
ent.directory = 1;
+ [[fallthrough]];
case ST_LINKFILE:
{
@@ -2337,7 +2340,7 @@ static imgtoolerr_t amiga_image_geticoninfo(imgtool::partition &partition, const
}
-static imgtoolerr_t amiga_image_suggesttransfer(imgtool::partition &partition, const char *fname, imgtool_transfer_suggestion *suggestions, size_t suggestions_length)
+static imgtoolerr_t amiga_image_suggesttransfer(imgtool::partition &partition, const char *fname, imgtool::transfer_suggestion *suggestions, size_t suggestions_length)
{
return IMGTOOLERR_UNIMPLEMENTED;
}
@@ -2384,7 +2387,7 @@ void amiga_floppy_get_info(const imgtool_class *imgclass, uint32_t state, union
case IMGTOOLINFO_INT_SUPPORTS_LASTMODIFIED_TIME: info->i = 1; break;
case IMGTOOLINFO_INT_PATH_SEPARATOR: info->i = '/'; break;
- /* --- the following bits of info are returned as NULL-terminated strings --- */
+ /* --- the following bits of info are returned as NUL-terminated strings --- */
case IMGTOOLINFO_STR_NAME: strcpy(info->s = imgtool_temp_str(), "amiga_floppy"); break;
case IMGTOOLINFO_STR_DESCRIPTION: strcpy(info->s = imgtool_temp_str(), "Amiga floppy disk image (OFS/FFS format)"); break;
case IMGTOOLINFO_STR_FILE_EXTENSIONS: strcpy(info->s = imgtool_temp_str(), "adf"); break;