cpukit libfs: Address -Wsign-compare warnings

Also includes a related libio change.

Most of these warnings were between int or ssize_t and size_t.
In particular, various POSIX system calls like read() and write()
return ssize_t and comparing that value with the sizeof a buffer
is a common source of these warnings. Another common source is
using an int as the iterator in a for loop with the limit being
a size_t.

With the type change, some printf() specifiers needed to change also.
This commit is contained in:
Joel Sherrill
2026-01-22 11:13:14 -06:00
committed by Kinsey Moore
parent babe771820
commit 7f77dfae60
14 changed files with 56 additions and 53 deletions

View File

@@ -199,7 +199,8 @@ extern "C" {
#error "CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK must be a power of two between 16 and 1024"
#endif
const int imfs_memfile_bytes_per_block = CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK;
const size_t imfs_memfile_bytes_per_block =
CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK;
/*
* Using the default ops if user doesn't configure ops

View File

@@ -87,7 +87,7 @@ extern IMFS_memfile_ops_t imfs_memfile_ops;
* @endcode
*/
#define IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK 128
extern const int imfs_memfile_bytes_per_block;
extern const size_t imfs_memfile_bytes_per_block;
#define IMFS_MEMFILE_BYTES_PER_BLOCK imfs_memfile_bytes_per_block
#define IMFS_MEMFILE_BLOCK_SLOTS \

View File

@@ -121,7 +121,7 @@ fat_scan_fat_for_free_clusters(
ssize_t bytes_written =
fat_cluster_set(fs_info, cl4find, 0, fs_info->vol.bpc, 0);
if (fs_info->vol.bpc != bytes_written)
if (fs_info->vol.bpc != (size_t) bytes_written)
{
rc = -1;
goto cleanup;
@@ -238,7 +238,7 @@ fat_get_fat_cluster(
int rc = RC_OK;
uint8_t *sec_buf;
uint32_t sec = 0;
uint32_t ofs = 0;
int32_t ofs = 0;
/* sanity check */
if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )
@@ -320,7 +320,7 @@ fat_set_fat_cluster(
{
int rc = RC_OK;
uint32_t sec = 0;
uint32_t ofs = 0;
int32_t ofs = 0;
uint16_t fat16_clv = 0;
uint32_t fat32_clv = 0;
uint8_t *sec_buf = NULL;

View File

@@ -81,7 +81,7 @@ msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)
uint32_t start = 0;
ssize_t ret = 0;
ssize_t cmpltd = 0;
uint32_t j = 0, i = 0;
ssize_t j = 0, i = 0;
uint32_t bts2rd = 0;
uint32_t cur_cln = 0;
uint32_t lfn_start = FAT_FILE_SHORT_NAME;

View File

@@ -351,8 +351,8 @@ static void IMFS_memfile_destroy(
)
{
IMFS_memfile_t *memfile;
int i;
int j;
size_t i;
size_t j;
unsigned int to_free;
block_p *p;

View File

@@ -220,7 +220,7 @@ rtems_rfs_bitmap_map_set (rtems_rfs_bitmap_control* control,
if (rc > 0)
return rc;
if (bit >= control->size)
if ((size_t) bit >= control->size)
return EINVAL;
search_map = control->search_bits;
@@ -266,7 +266,7 @@ rtems_rfs_bitmap_map_clear (rtems_rfs_bitmap_control* control,
if (rc > 0)
return rc;
if (bit >= control->size)
if ((size_t) bit >= control->size)
return EINVAL;
search_map = control->search_bits;
@@ -304,7 +304,7 @@ rtems_rfs_bitmap_map_test (rtems_rfs_bitmap_control* control,
rc = rtems_rfs_bitmap_load_map (control, &map);
if (rc > 0)
return rc;
if (bit >= control->size)
if ((size_t) bit >= control->size)
return EINVAL;
index = rtems_rfs_bitmap_map_index (bit);
*state = rtems_rfs_bitmap_test (map[index], bit);
@@ -316,7 +316,7 @@ rtems_rfs_bitmap_map_set_all (rtems_rfs_bitmap_control* control)
{
rtems_rfs_bitmap_map map;
size_t elements;
int e;
size_t e;
int rc;
rc = rtems_rfs_bitmap_load_map (control, &map);
@@ -346,7 +346,7 @@ rtems_rfs_bitmap_map_clear_all (rtems_rfs_bitmap_control* control)
rtems_rfs_bitmap_map map;
rtems_rfs_bitmap_bit last_search_bit;
size_t elements;
int e;
size_t e;
int rc;
rc = rtems_rfs_bitmap_load_map (control, &map);
@@ -419,7 +419,7 @@ rtems_rfs_search_map_for_clear_bit (rtems_rfs_bitmap_control* control,
if (end_bit < 0)
end_bit = 0;
else if (end_bit >= control->size)
else if ((size_t) end_bit >= control->size)
end_bit = control->size - 1;
map_index = rtems_rfs_bitmap_map_index (test_bit);
@@ -571,13 +571,13 @@ rtems_rfs_bitmap_map_alloc (rtems_rfs_bitmap_control* control,
* be balanced for the upper or lower seeds. We move to the limits, search
* then return false if no clear bits are found.
*/
while (((upper_seed >= 0) && (upper_seed < control->size))
|| ((lower_seed >= 0) && (lower_seed < control->size)))
while (((upper_seed >= 0) && ((size_t) upper_seed < control->size))
|| ((lower_seed >= 0) && ((size_t) lower_seed < control->size)))
{
/*
* Search up first so bits allocated in succession are grouped together.
*/
if (upper_seed < control->size)
if ((size_t) upper_seed < control->size)
{
*bit = upper_seed;
rc = rtems_rfs_search_map_for_clear_bit (control, bit, allocated,
@@ -599,7 +599,7 @@ rtems_rfs_bitmap_map_alloc (rtems_rfs_bitmap_control* control,
* Do not bound the limits at the edges of the map. Do not update if an
* edge has been passed.
*/
if (upper_seed < control->size)
if ((size_t) upper_seed < control->size)
upper_seed += window;
if (lower_seed >= 0)
lower_seed -= window;

View File

@@ -427,7 +427,7 @@ rtems_rfs_block_map_grow (rtems_rfs_file_system* fs,
size_t blocks,
rtems_rfs_block_no* new_block)
{
int b;
size_t b;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))
printf ("rtems-rfs: block-map-grow: entry: blocks=%zd count=%" PRIu32 "\n",

View File

@@ -164,7 +164,7 @@ rtems_rfs_dir_lookup_ino (rtems_rfs_file_system* fs,
while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
uint32_t ehash;
int elength;
size_t elength;
ehash = rtems_rfs_dir_entry_hash (entry);
elength = rtems_rfs_dir_entry_length (entry);
@@ -177,7 +177,7 @@ rtems_rfs_dir_lookup_ino (rtems_rfs_file_system* fs,
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))
printf ("rtems-rfs: dir-lookup-ino: "
"bad length or ino for ino %" PRIu32 ": %u/%" PRId32 " @ %04" PRIx32 "\n",
"bad length or ino for ino %" PRIu32 ": %zd/%" PRId32 " @ %04" PRIx32 "\n",
rtems_rfs_inode_ino (inode), elength, *ino, map.bpos.boff);
rc = EIO;
break;
@@ -188,7 +188,7 @@ rtems_rfs_dir_lookup_ino (rtems_rfs_file_system* fs,
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK))
printf ("rtems-rfs: dir-lookup-ino: "
"checking entry for ino %" PRId32 ": bno=%04" PRIx32 "/off=%04" PRIx32
" length:%d ino:%" PRId32 "\n",
" length:%zd ino:%" PRId32 "\n",
rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
elength, rtems_rfs_dir_entry_ino (entry));
@@ -254,7 +254,7 @@ rtems_rfs_dir_add_entry (rtems_rfs_file_system* fs,
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))
{
int c;
size_t c;
printf ("rtems-rfs: dir-add-entry: dir=%" PRId32 ", name=",
rtems_rfs_inode_ino (dir));
for (c = 0; c < length; c++)
@@ -282,7 +282,7 @@ rtems_rfs_dir_add_entry (rtems_rfs_file_system* fs,
{
rtems_rfs_block_no block;
uint8_t* entry;
int offset;
size_t offset;
bool read = true;
/*
@@ -340,7 +340,7 @@ rtems_rfs_dir_add_entry (rtems_rfs_file_system* fs,
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
size_t elength;
elength = rtems_rfs_dir_entry_length (entry);
eino = rtems_rfs_dir_entry_ino (entry);
@@ -370,7 +370,7 @@ rtems_rfs_dir_add_entry (rtems_rfs_file_system* fs,
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))
printf ("rtems-rfs: dir-add-entry: "
"bad length or ino for ino %" PRIu32 ": %u/%" PRId32 " @ %04x\n",
"bad length or ino for ino %" PRIu32 ": %zu/%" PRId32 " @ %04zx\n",
rtems_rfs_inode_ino (dir), elength, eino, offset);
rtems_rfs_buffer_handle_close (fs, &buffer);
rtems_rfs_block_map_close (fs, &map);
@@ -431,7 +431,7 @@ rtems_rfs_dir_del_entry (rtems_rfs_file_system* fs,
while (rc == 0)
{
uint8_t* entry;
int eoffset;
size_t eoffset;
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);
if (rc > 0)
@@ -457,7 +457,7 @@ rtems_rfs_dir_del_entry (rtems_rfs_file_system* fs,
while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
size_t elength;
elength = rtems_rfs_dir_entry_length (entry);
eino = rtems_rfs_dir_entry_ino (entry);
@@ -469,8 +469,8 @@ rtems_rfs_dir_del_entry (rtems_rfs_file_system* fs,
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
printf ("rtems-rfs: dir-del-entry: "
"bad length or ino for ino %" PRIu32 ": %u/%" PRId32
" @ %" PRIu32 ".%04x\n",
"bad length or ino for ino %" PRIu32 ": %zd/%" PRId32
" @ %" PRIu32 ".%04zx\n",
rtems_rfs_inode_ino (dir), elength, eino, block, eoffset);
rc = EIO;
break;
@@ -494,8 +494,8 @@ rtems_rfs_dir_del_entry (rtems_rfs_file_system* fs,
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))
printf ("rtems-rfs: dir-del-entry: "
"last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
" offset=%d last=%s\n",
"last block free for ino %" PRIu32 ": elength=%zd block=%" PRIu32
" offset=%zd last=%s\n",
ino, elength, block, eoffset,
rtems_rfs_block_map_last (&map) ? "yes" : "no");
@@ -592,7 +592,7 @@ rtems_rfs_dir_read (rtems_rfs_file_system* fs,
{
uint8_t* entry;
rtems_rfs_ino eino;
int elength;
size_t elength;
int remaining;
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);
@@ -615,7 +615,7 @@ rtems_rfs_dir_read (rtems_rfs_file_system* fs,
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
printf ("rtems-rfs: dir-read: "
"bad length or ino for ino %" PRIu32 ": %u/%" PRId32 " @ %04" PRIx32 "\n",
"bad length or ino for ino %" PRIu32 ": %zu/%" PRId32 " @ %04" PRIx32 "\n",
rtems_rfs_inode_ino (dir), elength, eino, map.bpos.boff);
rc = EIO;
break;
@@ -704,7 +704,7 @@ rtems_rfs_dir_empty (rtems_rfs_file_system* fs,
while (empty)
{
uint8_t* entry;
int offset;
size_t offset;
rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);
if (rc > 0)
@@ -716,7 +716,7 @@ rtems_rfs_dir_empty (rtems_rfs_file_system* fs,
while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
{
rtems_rfs_ino eino;
int elength;
size_t elength;
elength = rtems_rfs_dir_entry_length (entry);
eino = rtems_rfs_dir_entry_ino (entry);
@@ -728,7 +728,7 @@ rtems_rfs_dir_empty (rtems_rfs_file_system* fs,
{
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_EMPTY))
printf ("rtems-rfs: dir-empty: "
"bad length or ino for ino %" PRIu32 ": %u/%" PRIu32 " @ %04x\n",
"bad length or ino for ino %" PRIu32 ": %zd/%" PRIu32 " @ %04zx\n",
rtems_rfs_inode_ino (dir), elength, eino, offset);
rc = EIO;
break;

View File

@@ -98,7 +98,7 @@ static int
rtems_rfs_inode_overhead (rtems_rfs_file_system* fs)
{
int blocks;
int bits_per_block;
size_t bits_per_block;
blocks = rtems_rfs_rup_quotient(fs->group_inodes * RTEMS_RFS_INODE_SIZE,
rtems_rfs_fs_block_size (fs));
bits_per_block = rtems_rfs_bits_per_block (fs);

View File

@@ -347,14 +347,16 @@ rtems_rfs_group_bitmap_test (rtems_rfs_file_system* fs,
if (inode)
{
if ((no < RTEMS_RFS_ROOT_INO) || (no > rtems_rfs_fs_inodes (fs)))
if ((no < RTEMS_RFS_ROOT_INO) ||
((uint32_t) no > rtems_rfs_fs_inodes (fs)))
return EINVAL;
no -= RTEMS_RFS_ROOT_INO;
size = fs->group_inodes;
}
else
{
if ((no < RTEMS_RFS_ROOT_INO) || (no >= rtems_rfs_fs_blocks (fs)))
if ((no < RTEMS_RFS_ROOT_INO) ||
((uint32_t) no >= rtems_rfs_fs_blocks (fs)))
return EINVAL;
no -= RTEMS_RFS_ROOT_INO;
size = fs->group_blocks;

View File

@@ -212,7 +212,7 @@ rtems_rfs_inode_create (rtems_rfs_file_system* fs,
if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))
{
const char* type = "unknown";
int c;
size_t c;
if (RTEMS_RFS_S_ISDIR (mode))
type = "dir";
else if (RTEMS_RFS_S_ISCHR (mode))

View File

@@ -287,7 +287,7 @@ rtems_rfs_symlink (rtems_rfs_file_system* fs,
printf ("%c", link[c]);
}
if (link_length >= rtems_rfs_fs_block_size (fs))
if ((size_t) link_length >= rtems_rfs_fs_block_size (fs))
return ENAMETOOLONG;
rc = rtems_rfs_inode_create (fs, parent, name, strlen (name),
@@ -305,7 +305,7 @@ rtems_rfs_symlink (rtems_rfs_file_system* fs,
* place the link into the data area else allocate a block and write the link
* to that.
*/
if (link_length < RTEMS_RFS_INODE_DATA_NAME_SIZE)
if ((size_t) link_length < RTEMS_RFS_INODE_DATA_NAME_SIZE)
{
memset (inode.node->data.name, 0, RTEMS_RFS_INODE_DATA_NAME_SIZE);
memcpy (inode.node->data.name, link, link_length);

View File

@@ -132,7 +132,7 @@ rtems_rfs_rtems_dir_read (rtems_libio_t* iop,
rtems_rfs_inode_handle inode;
struct dirent* dirent;
ssize_t bytes_transferred;
int d;
size_t d;
int rc;
count = count / sizeof (struct dirent);

View File

@@ -191,7 +191,7 @@ rtems_rfs_shell_block (rtems_rfs_file_system* fs, int argc, char *argv[])
rtems_rfs_block_no block;
uint8_t* data;
bool state;
int b;
size_t b;
int rc;
if (argc <= 1)
@@ -243,7 +243,7 @@ rtems_rfs_shell_block (rtems_rfs_file_system* fs, int argc, char *argv[])
{
if (b)
printf ("\n");
printf ("%04x ", b);
printf ("%04zx ", b);
}
if (mod == 8)
printf (" ");
@@ -449,7 +449,7 @@ rtems_rfs_shell_dir (rtems_rfs_file_system* fs, int argc, char *argv[])
uint8_t* data;
bool state;
int entry;
int b;
size_t b;
int rc;
if (argc <= 1)
@@ -499,9 +499,9 @@ rtems_rfs_shell_dir (rtems_rfs_file_system* fs, int argc, char *argv[])
while (b < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE - 1))
{
rtems_rfs_ino eino;
int elength;
int length;
int c;
size_t elength;
size_t length;
size_t c;
eino = rtems_rfs_dir_entry_ino (data);
elength = rtems_rfs_dir_entry_length (data);
@@ -512,7 +512,7 @@ rtems_rfs_shell_dir (rtems_rfs_file_system* fs, int argc, char *argv[])
if ((elength < RTEMS_RFS_DIR_ENTRY_SIZE) ||
(elength >= rtems_rfs_fs_max_name (fs)))
{
printf (" %5d: entry length appears corrupt: %d\n", entry, elength);
printf (" %5d: entry length appears corrupt: %zd\n", entry, elength);
break;
}
@@ -524,7 +524,7 @@ rtems_rfs_shell_dir (rtems_rfs_file_system* fs, int argc, char *argv[])
length = elength - RTEMS_RFS_DIR_ENTRY_SIZE;
printf (" %5d: %04x inode=%-6" PRIu32 " hash=%08" PRIx32 " name[%03u]=",
printf (" %5d: %04zx inode=%-6" PRIu32 " hash=%08x name[%03zd]=",
entry, b,
rtems_rfs_dir_entry_ino (data),
rtems_rfs_dir_entry_hash (data),
@@ -642,7 +642,7 @@ rtems_shell_debugrfs (int argc, char *argv[])
};
int arg;
int t;
size_t t;
for (arg = 1; arg < argc; arg++)
{