diff options
Diffstat (limited to 'src/tools/imgtool/modules/amiga.cpp')
-rw-r--r-- | src/tools/imgtool/modules/amiga.cpp | 275 |
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; |