more of -Wall fixes from Cristian Ionescu-Idbohrn.
Some are fixing real bugs.
function old new delta
syslogd_main 938 958 +20
get_signum 136 143 +7
obj_load 777 782 +5
recv_from_to 210 214 +4
get_next_block 1795 1799 +4
display_topmem_process_list 1117 1121 +4
logread_main 484 487 +3
buffer_fill_and_print 73 76 +3
kill_main 687 689 +2
ll_remember_index 240 241 +1
do_stats 452 453 +1
if_readconf 166 165 -1
display_process_list 1192 1191 -1
run_applet_and_exit 507 505 -2
print_signames 33 31 -2
parse_one_line 1092 1090 -2
find_out_spec 57 55 -2
add_ksymoops_symbols 421 419 -2
ash_main 1407 1402 -5
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 11/8 up/down: 54/-17) Total: 37 bytes
diff --git a/archival/libunarchive/archive_xread_all_eof.c b/archival/libunarchive/archive_xread_all_eof.c
index 7e082ab..c93dfa2 100644
--- a/archival/libunarchive/archive_xread_all_eof.c
+++ b/archival/libunarchive/archive_xread_all_eof.c
@@ -12,7 +12,7 @@
ssize_t size;
size = full_read(archive_handle->src_fd, buf, count);
- if (size != 0 && size != count) {
+ if (size != 0 && size != (ssize_t)count) {
bb_error_msg_and_die("short read: %u of %u",
(unsigned)size, (unsigned)count);
}
diff --git a/archival/libunarchive/decompress_bunzip2.c b/archival/libunarchive/decompress_bunzip2.c
index c1b1273..f74fdf1 100644
--- a/archival/libunarchive/decompress_bunzip2.c
+++ b/archival/libunarchive/decompress_bunzip2.c
@@ -103,7 +103,7 @@
/* If we need to get more data from the byte buffer, do so. (Loop getting
one byte at a time to enforce endianness and avoid unaligned access.) */
- while (bd->inbufBitCount < bits_wanted) {
+ while ((int)(bd->inbufBitCount) < bits_wanted) {
/* If we need to read more data from file into byte buffer, do so */
@@ -172,7 +172,7 @@
if (get_bits(bd, 1)) return RETVAL_OBSOLETE_INPUT;
origPtr = get_bits(bd, 24);
- if (origPtr > dbufSize) return RETVAL_DATA_ERROR;
+ if ((int)origPtr > dbufSize) return RETVAL_DATA_ERROR;
/* mapping table: if some byte values are never used (encoding things
like ascii text), the compression code removes the gaps to have fewer
@@ -368,7 +368,7 @@
j = get_bits(bd, hufGroup->maxLen);
*/
- while (bd->inbufBitCount < hufGroup->maxLen) {
+ while ((int)(bd->inbufBitCount) < hufGroup->maxLen) {
if (bd->inbufPos == bd->inbufCount) {
j = get_bits(bd, hufGroup->maxLen);
goto got_huff_bits;
@@ -505,7 +505,7 @@
it doesn't qualify as a run (hence writeRunCountdown=5). */
if (dbufCount) {
- if (origPtr >= dbufCount) return RETVAL_DATA_ERROR;
+ if ((int)origPtr >= dbufCount) return RETVAL_DATA_ERROR;
bd->writePos = dbuf[origPtr];
bd->writeCurrent = (unsigned char)(bd->writePos & 0xff);
bd->writePos >>= 8;
diff --git a/archival/libunarchive/decompress_unlzma.c b/archival/libunarchive/decompress_unlzma.c
index 5fb7eae..c320400 100644
--- a/archival/libunarchive/decompress_unlzma.c
+++ b/archival/libunarchive/decompress_unlzma.c
@@ -329,7 +329,7 @@
if (buffer_pos == header.dict_size) {
buffer_pos = 0;
global_pos += header.dict_size;
- if (full_write(dst_fd, buffer, header.dict_size) != header.dict_size)
+ if (full_write(dst_fd, buffer, header.dict_size) != (ssize_t)header.dict_size)
goto bad;
USE_DESKTOP(total_written += header.dict_size;)
}
@@ -480,7 +480,7 @@
if (buffer_pos == header.dict_size) {
buffer_pos = 0;
global_pos += header.dict_size;
- if (full_write(dst_fd, buffer, header.dict_size) != header.dict_size)
+ if (full_write(dst_fd, buffer, header.dict_size) != (ssize_t)header.dict_size)
goto bad;
USE_DESKTOP(total_written += header.dict_size;)
}
@@ -489,7 +489,7 @@
}
}
- if (full_write(dst_fd, buffer, buffer_pos) != buffer_pos) {
+ if (full_write(dst_fd, buffer, buffer_pos) != (ssize_t)buffer_pos) {
bad:
rc_free(rc);
return -1;
diff --git a/archival/libunarchive/decompress_unzip.c b/archival/libunarchive/decompress_unzip.c
index a764fbc..9036fab 100644
--- a/archival/libunarchive/decompress_unzip.c
+++ b/archival/libunarchive/decompress_unzip.c
@@ -922,7 +922,7 @@
/* Two callsites, both in inflate_get_next_window */
static void calculate_gunzip_crc(STATE_PARAM_ONLY)
{
- int n;
+ unsigned n;
for (n = 0; n < gunzip_outbuf_count; n++) {
gunzip_crc = gunzip_crc_table[((int) gunzip_crc ^ (gunzip_window[n])) & 0xff] ^ (gunzip_crc >> 8);
}
@@ -1003,7 +1003,7 @@
while (1) {
int r = inflate_get_next_window(PASS_STATE_ONLY);
nwrote = full_write(out, gunzip_window, gunzip_outbuf_count);
- if (nwrote != gunzip_outbuf_count) {
+ if (nwrote != (ssize_t)gunzip_outbuf_count) {
bb_perror_msg("write");
n = -1;
goto ret;
@@ -1064,7 +1064,7 @@
{
int count = bytebuffer_size - bytebuffer_offset;
- if (count < n) {
+ if (count < (int)n) {
memmove(bytebuffer, &bytebuffer[bytebuffer_offset], count);
bytebuffer_offset = 0;
bytebuffer_size = full_read(gunzip_src_fd, &bytebuffer[count], bytebuffer_max - count);
diff --git a/include/libbb.h b/include/libbb.h
index 09dcc1b..216b3ec 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -1367,7 +1367,7 @@
#undef isdigit
#define isdigit(a) ((unsigned)((a) - '0') <= 9)
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+#define ARRAY_SIZE(x) ((unsigned)(sizeof(x) / sizeof((x)[0])))
#if __GNUC_PREREQ(4,1)
diff --git a/libbb/appletlib.c b/libbb/appletlib.c
index 9fe0cf9..3d5aef8 100644
--- a/libbb/appletlib.c
+++ b/libbb/appletlib.c
@@ -598,7 +598,7 @@
int (*lf)(const char *, const char *);
char *fpc;
- int i;
+ unsigned i;
int rc;
lf = link;
diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index 62dcc55..9c802a3 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -199,7 +199,7 @@
{
bb_putchar(c);
}
- if (++cmdedit_x >= cmdedit_termw) {
+ if (++cmdedit_x >= (int)cmdedit_termw) {
/* terminal is scrolled down */
cmdedit_y++;
cmdedit_x = 0;
@@ -861,7 +861,8 @@
exe_n_cwd_tab_completion(matchBuf, find_type);
/* Sort, then remove any duplicates found */
if (matches) {
- int i, n = 0;
+ unsigned i;
+ int n = 0;
qsort_string_vector(matches, num_matches);
for (i = 0; i < num_matches - 1; ++i) {
if (matches[i] && matches[i+1]) { /* paranoia */
diff --git a/libbb/u_signal_names.c b/libbb/u_signal_names.c
index 7a0f75d..1dcbf5f 100644
--- a/libbb/u_signal_names.c
+++ b/libbb/u_signal_names.c
@@ -123,14 +123,14 @@
int get_signum(const char *name)
{
- int i;
+ unsigned i;
i = bb_strtou(name, NULL, 10);
if (!errno)
return i;
if (strncasecmp(name, "SIG", 3) == 0)
name += 3;
- for (i = 0; (size_t)i < ARRAY_SIZE(signals); i++)
+ for (i = 0; i < ARRAY_SIZE(signals); i++)
if (strcasecmp(name, signals[i]) == 0)
return i;
@@ -170,9 +170,9 @@
void print_signames(void)
{
- int signo;
+ unsigned signo;
- for (signo = 1; (size_t)signo < ARRAY_SIZE(signals); signo++) {
+ for (signo = 1; signo < ARRAY_SIZE(signals); signo++) {
const char *name = signals[signo];
if (name[0])
puts(name);
diff --git a/libbb/udp_io.c b/libbb/udp_io.c
index e968ecb..689c39a 100644
--- a/libbb/udp_io.c
+++ b/libbb/udp_io.c
@@ -113,7 +113,7 @@
} u;
struct cmsghdr *cmsgptr;
struct msghdr msg;
- socklen_t recv_length;
+ ssize_t recv_length;
iov[0].iov_base = buf;
iov[0].iov_len = len;
diff --git a/loginutils/getty.c b/loginutils/getty.c
index da0dce3..5e16182 100644
--- a/loginutils/getty.c
+++ b/loginutils/getty.c
@@ -479,7 +479,7 @@
default:
if (!isascii(ascval) || !isprint(ascval)) {
/* ignore garbage characters */
- } else if (bp - logname >= size_logname - 1) {
+ } else if ((int)(bp - logname) >= size_logname - 1) {
bb_error_msg_and_die("%s: input overrun", op->tty);
} else {
full_write(1, &c, 1); /* echo the character */
diff --git a/miscutils/crond.c b/miscutils/crond.c
index 0b2d558..6db4df4 100644
--- a/miscutils/crond.c
+++ b/miscutils/crond.c
@@ -423,7 +423,7 @@
static void FixDayDow(CronLine *line)
{
- size_t i;
+ unsigned i;
int weekUsed = 0;
int daysUsed = 0;
diff --git a/miscutils/hdparm.c b/miscutils/hdparm.c
index ec5ede6..7afa9ff 100644
--- a/miscutils/hdparm.c
+++ b/miscutils/hdparm.c
@@ -1486,7 +1486,8 @@
static int translate_xfermode(const char *name)
{
- int val, i;
+ int val;
+ unsigned i;
for (i = 0; i < ARRAY_SIZE(xfermode_val); i++) {
if (!strncmp(name, xfermode_name[i], 5))
diff --git a/miscutils/less.c b/miscutils/less.c
index 065bf6f..25b91c0 100644
--- a/miscutils/less.c
+++ b/miscutils/less.c
@@ -297,7 +297,7 @@
new_linepos += 7;
new_linepos &= (~7);
}
- if (new_linepos >= w)
+ if ((int)new_linepos >= w)
break;
linepos = new_linepos;
}
@@ -415,7 +415,7 @@
printf(" lines %i-%i/%i ",
cur_fline + 1, cur_fline + max_displayed_line + 1,
max_fline + 1);
- if (cur_fline >= max_fline - max_displayed_line) {
+ if (cur_fline >= (int)(max_fline - max_displayed_line)) {
printf("(END)"NORMAL);
if (num_files > 1 && current_file != num_files)
printf(HIGHLIGHT" - next: %s"NORMAL, files[current_file]);
@@ -444,7 +444,7 @@
#endif
clear_line();
- if (cur_fline && cur_fline < max_fline - max_displayed_line) {
+ if (cur_fline && cur_fline < (int)(max_fline - max_displayed_line)) {
bb_putchar(':');
return;
}
@@ -587,7 +587,7 @@
/* Print the buffer */
static void buffer_print(void)
{
- int i;
+ unsigned i;
move_cursor(0, 0);
for (i = 0; i <= max_displayed_line; i++)
@@ -600,7 +600,7 @@
static void buffer_fill_and_print(void)
{
- int i;
+ unsigned i;
for (i = 0; i <= max_displayed_line && cur_fline + i <= max_fline; i++) {
buffer[i] = flines[cur_fline + i];
}
@@ -662,7 +662,7 @@
/* Reinitialize everything for a new file - free the memory and start over */
static void reinitialize(void)
{
- int i;
+ unsigned i;
if (flines) {
for (i = 0; i <= max_fline; i++)
@@ -763,7 +763,7 @@
static char* less_gets(int sz)
{
char c;
- int i = 0;
+ unsigned i = 0;
char *result = xzalloc(1);
while (1) {
@@ -836,7 +836,7 @@
static void remove_current_file(void)
{
- int i;
+ unsigned i;
if (num_files < 2)
return;
@@ -974,7 +974,7 @@
match_pos = 0;
fill_match_lines(0);
while (match_pos < num_matches) {
- if (match_lines[match_pos] > cur_fline)
+ if ((int)match_lines[match_pos] > cur_fline)
break;
match_pos++;
}
@@ -990,7 +990,7 @@
static void number_process(int first_digit)
{
- int i;
+ unsigned i;
int num;
char num_input[sizeof(int)*4]; /* more than enough */
char keypress;
@@ -1120,7 +1120,7 @@
{
const char *msg = "";
char *current_line;
- int i;
+ unsigned i;
FILE *fp;
print_statusline("Log file: ");
@@ -1204,7 +1204,7 @@
static void match_right_bracket(char bracket)
{
- int i;
+ unsigned i;
if (strchr(flines[cur_fline], bracket) == NULL) {
print_statusline("No bracket in top line");
diff --git a/miscutils/makedevs.c b/miscutils/makedevs.c
index 43e4b8c..3b45d70 100644
--- a/miscutils/makedevs.c
+++ b/miscutils/makedevs.c
@@ -99,12 +99,12 @@
while ((line = xmalloc_fgetline(table)) != NULL) {
char type;
- unsigned int mode = 0755;
- unsigned int major = 0;
- unsigned int minor = 0;
- unsigned int count = 0;
- unsigned int increment = 0;
- unsigned int start = 0;
+ unsigned mode = 0755;
+ unsigned major = 0;
+ unsigned minor = 0;
+ unsigned count = 0;
+ unsigned increment = 0;
+ unsigned start = 0;
char name[41];
char user[41];
char group[41];
@@ -121,7 +121,7 @@
{
if (*line=='\0' || *line=='#' || isspace(*line))
continue;
- bb_error_msg("line %d invalid: '%s'", linenum, line);
+ bb_error_msg("invalid line %d: '%s'", linenum, line);
ret = EXIT_FAILURE;
continue;
}
@@ -140,7 +140,7 @@
ret = EXIT_FAILURE;
goto loop;
}
- if ((mode != -1) && (chmod(full_name, mode) < 0)){
+ if (chmod(full_name, mode) < 0) {
bb_perror_msg("line %d: chmod failed for %s", linenum, full_name);
ret = EXIT_FAILURE;
goto loop;
@@ -157,7 +157,7 @@
ret = EXIT_FAILURE;
goto loop;
}
- if ((mode != -1) && (chmod(full_name, mode) < 0)){
+ if (chmod(full_name, mode) < 0) {
bb_perror_msg("line %d: chmod failed for %s", linenum, full_name);
ret = EXIT_FAILURE;
goto loop;
@@ -180,7 +180,7 @@
}
if (count > 0) {
- int i;
+ unsigned i;
char *full_name_inc;
full_name_inc = xmalloc(strlen(full_name) + 4);
@@ -195,7 +195,7 @@
bb_perror_msg("line %d: chown failed for %s", linenum, full_name_inc);
ret = EXIT_FAILURE;
}
- if ((mode != -1) && (chmod(full_name_inc, mode) < 0)){
+ if (chmod(full_name_inc, mode) < 0) {
bb_perror_msg("line %d: chmod failed for %s", linenum, full_name_inc);
ret = EXIT_FAILURE;
}
@@ -211,7 +211,7 @@
bb_perror_msg("line %d: chown failed for %s", linenum, full_name);
ret = EXIT_FAILURE;
}
- if ((mode != -1) && (chmod(full_name, mode) < 0)){
+ if (chmod(full_name, mode) < 0) {
bb_perror_msg("line %d: chmod failed for %s", linenum, full_name);
ret = EXIT_FAILURE;
}
diff --git a/modutils/insmod.c b/modutils/insmod.c
index f6dcbe8..0a74ba0 100644
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
@@ -2041,7 +2041,7 @@
int n_type = ELF_ST_TYPE(info);
int n_binding = ELF_ST_BIND(info);
- for (sym = f->symtab[hash]; sym; sym = sym->next)
+ for (sym = f->symtab[hash]; sym; sym = sym->next) {
if (f->symbol_cmp(sym->name, name) == 0) {
int o_secidx = sym->secidx;
int o_info = sym->info;
@@ -2100,14 +2100,14 @@
return sym;
}
}
+ }
/* Completely new symbol. */
sym = arch_new_symbol();
sym->next = f->symtab[hash];
f->symtab[hash] = sym;
sym->ksymidx = -1;
-
- if (ELF_ST_BIND(info) == STB_LOCAL && symidx != -1) {
+ if (ELF_ST_BIND(info) == STB_LOCAL && symidx != (unsigned long)(-1)) {
if (symidx >= f->local_symtab_size)
bb_error_msg("local symbol %s with index %ld exceeds local_symtab_size %ld",
name, (long) symidx, (long) f->local_symtab_size);
@@ -3313,7 +3313,7 @@
{
struct obj_file *f;
ElfW(Shdr) * section_headers;
- int shnum, i;
+ size_t shnum, i;
char *shstrtab;
/* Read the file header. */
@@ -3585,7 +3585,7 @@
while (ptr < endptr) {
value = strchr(ptr, '=');
if (value && strncmp(ptr, "license", value-ptr) == 0) {
- int i;
+ unsigned i;
if (license)
*license = value+1;
for (i = 0; i < ARRAY_SIZE(gpl_licenses); ++i) {
@@ -3724,7 +3724,8 @@
struct obj_symbol *sym;
char *name, *absolute_filename;
char str[STRVERSIONLEN];
- int i, l, lm_name, lfilename, use_ksymtab, version;
+ unsigned i;
+ int l, lm_name, lfilename, use_ksymtab, version;
struct stat statbuf;
/* WARNING: was using realpath, but replaced by readlink to stop using
@@ -4127,7 +4128,7 @@
m_size = obj_load_size(f);
m_addr = create_module(m_name, m_size);
- if (m_addr == -1) switch (errno) {
+ if (m_addr == (ElfW(Addr))(-1)) switch (errno) {
case EEXIST:
bb_error_msg_and_die("a module named %s already exists", m_name);
case ENOMEM:
diff --git a/networking/arping.c b/networking/arping.c
index 9d2c671..2db2ff4 100644
--- a/networking/arping.c
+++ b/networking/arping.c
@@ -174,7 +174,7 @@
if (ah->ar_pro != htons(ETH_P_IP)
|| (ah->ar_pln != 4)
|| (ah->ar_hln != me.sll_halen)
- || (len < sizeof(*ah) + 2 * (4 + ah->ar_hln)))
+ || (len < (int)(sizeof(*ah) + 2 * (4 + ah->ar_hln))))
return false;
memcpy(&src_ip, p + ah->ar_hln, 4);
diff --git a/networking/httpd.c b/networking/httpd.c
index 6fd322c..f835d80 100644
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -600,7 +600,7 @@
#if ENABLE_FEATURE_HTTPD_ERROR_PAGES
if (flag == FIRST_PARSE && *p0 == 'E') {
- int i;
+ unsigned i;
/* error status code */
int status = atoi(++p0);
/* c already points at the character following ':' in parse loop */
diff --git a/networking/ifenslave.c b/networking/ifenslave.c
index 0aa2320..983d9d0 100644
--- a/networking/ifenslave.c
+++ b/networking/ifenslave.c
@@ -604,7 +604,7 @@
struct ifreq ifr;
int res;
- int i;
+ unsigned i;
for (i = 0; i < ARRAY_SIZE(ifra); i++) {
strncpy_IFNAMSIZ(ifr.ifr_name, master_ifname);
diff --git a/networking/ifupdown.c b/networking/ifupdown.c
index 50b9626..c123918 100644
--- a/networking/ifupdown.c
+++ b/networking/ifupdown.c
@@ -486,7 +486,7 @@
#if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP
static int dhcp_up(struct interface_defn_t *ifd, execfn *exec)
{
- int i;
+ unsigned i;
#if ENABLE_FEATURE_IFUPDOWN_IP
/* ip doesn't up iface when it configures it (unlike ifconfig) */
if (!execute("ip link set %iface% up", ifd, exec))
@@ -522,7 +522,7 @@
#if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP
static int dhcp_down(struct interface_defn_t *ifd, execfn *exec)
{
- int i;
+ unsigned i;
for (i = 0; i < ARRAY_SIZE(ext_dhcp_clients); i++) {
if (exists_execable(ext_dhcp_clients[i].name))
return execute(ext_dhcp_clients[i].stopcmd, ifd, exec);
@@ -1154,7 +1154,7 @@
char *liface;
char *pch;
bool okay = 0;
- unsigned cmds_ret;
+ int cmds_ret;
iface = xstrdup(target_list->data);
target_list = target_list->link;
diff --git a/networking/inetd.c b/networking/inetd.c
index d71a115..3be9dcb 100644
--- a/networking/inetd.c
+++ b/networking/inetd.c
@@ -750,7 +750,7 @@
if (*p == '-') {
p++;
n = bb_strtou(p, &p, 10);
- if (n > INT_MAX || n < sep->se_rpcver_lo)
+ if (n > INT_MAX || (int)n < sep->se_rpcver_lo)
goto bad_ver_spec;
sep->se_rpcver_hi = n;
}
@@ -812,7 +812,7 @@
&& (sep->se_socktype == SOCK_STREAM
|| sep->se_socktype == SOCK_DGRAM)
) {
- int i;
+ unsigned i;
for (i = 0; i < ARRAY_SIZE(builtins); i++)
if (strncmp(builtins[i].bi_service7, sep->se_service, 7) == 0)
goto found_bi;
diff --git a/networking/interface.c b/networking/interface.c
index ee8ab10..a24ab01 100644
--- a/networking/interface.c
+++ b/networking/interface.c
@@ -525,7 +525,7 @@
if (ioctl_or_warn(skfd, SIOCGIFCONF, &ifc) < 0) {
goto out;
}
- if (ifc.ifc_len == sizeof(struct ifreq) * numreqs) {
+ if (ifc.ifc_len == (int)(sizeof(struct ifreq) * numreqs)) {
/* assume it overflowed and try again */
numreqs += 10;
continue;
@@ -862,7 +862,7 @@
/* return 1 if address is all zeros */
static int hw_null_address(const struct hwtype *hw, void *ap)
{
- unsigned int i;
+ int i;
unsigned char *address = (unsigned char *) ap;
for (i = 0; i < hw->alen; i++)
diff --git a/networking/isrv_identd.c b/networking/isrv_identd.c
index a96ac60..3e05632 100644
--- a/networking/isrv_identd.c
+++ b/networking/isrv_identd.c
@@ -61,7 +61,7 @@
p = strpbrk(cur, "\r\n");
if (p)
*p = '\0';
- if (!p && sz && buf->pos <= sizeof(buf->buf))
+ if (!p && sz && buf->pos <= (int)sizeof(buf->buf))
goto ok;
/* Terminate session. If we are in server mode, then
* fd is still in nonblocking mode - we never block here */
diff --git a/networking/libiproute/libnetlink.c b/networking/libiproute/libnetlink.c
index d29d035..47a055a 100644
--- a/networking/libiproute/libnetlink.c
+++ b/networking/libiproute/libnetlink.c
@@ -265,7 +265,7 @@
if (msg.msg_namelen != sizeof(nladdr)) {
bb_error_msg_and_die("sender address length == %d", msg.msg_namelen);
}
- for (h = (struct nlmsghdr*)buf; status >= sizeof(*h); ) {
+ for (h = (struct nlmsghdr*)buf; status >= (int)sizeof(*h); ) {
// int l_err;
int len = h->nlmsg_len;
int l = len - sizeof(*h);
@@ -293,7 +293,7 @@
if (h->nlmsg_type == NLMSG_ERROR) {
struct nlmsgerr *err = (struct nlmsgerr*)NLMSG_DATA(h);
- if (l < sizeof(struct nlmsgerr)) {
+ if (l < (int)sizeof(struct nlmsgerr)) {
bb_error_msg("ERROR truncated");
} else {
errno = - err->error;
@@ -336,7 +336,7 @@
{
int len = RTA_LENGTH(4);
struct rtattr *rta;
- if (NLMSG_ALIGN(n->nlmsg_len) + len > maxlen)
+ if ((int)(NLMSG_ALIGN(n->nlmsg_len) + len) > maxlen)
return -1;
rta = (struct rtattr*)(((char*)n) + NLMSG_ALIGN(n->nlmsg_len));
rta->rta_type = type;
@@ -351,7 +351,7 @@
int len = RTA_LENGTH(alen);
struct rtattr *rta;
- if (NLMSG_ALIGN(n->nlmsg_len) + len > maxlen)
+ if ((int)(NLMSG_ALIGN(n->nlmsg_len) + len) > maxlen)
return -1;
rta = (struct rtattr*)(((char*)n) + NLMSG_ALIGN(n->nlmsg_len));
rta->rta_type = type;
diff --git a/networking/libiproute/ll_map.c b/networking/libiproute/ll_map.c
index 3cfc9cc..031b29a 100644
--- a/networking/libiproute/ll_map.c
+++ b/networking/libiproute/ll_map.c
@@ -75,7 +75,7 @@
if (tb[IFLA_ADDRESS]) {
int alen;
im->alen = alen = RTA_PAYLOAD(tb[IFLA_ADDRESS]);
- if (alen > sizeof(im->addr))
+ if (alen > (int)sizeof(im->addr))
alen = sizeof(im->addr);
memcpy(im->addr, RTA_DATA(tb[IFLA_ADDRESS]), alen);
} else {
diff --git a/networking/libiproute/ll_proto.c b/networking/libiproute/ll_proto.c
index 62262c9..8d96374 100644
--- a/networking/libiproute/ll_proto.c
+++ b/networking/libiproute/ll_proto.c
@@ -98,10 +98,8 @@
const char *ll_proto_n2a(unsigned short id, char *buf, int len)
{
- int i;
-
+ unsigned i;
id = ntohs(id);
-
for (i = 0; i < ARRAY_SIZE(llproto_names); i++) {
if (llproto_names[i].id == id)
return llproto_names[i].name;
@@ -112,7 +110,7 @@
int ll_proto_a2n(unsigned short *id, char *buf)
{
- int i;
+ unsigned i;
for (i = 0; i < ARRAY_SIZE(llproto_names); i++) {
if (strcasecmp(llproto_names[i].name, buf) == 0) {
*id = htons(llproto_names[i].id);
diff --git a/networking/libiproute/ll_types.c b/networking/libiproute/ll_types.c
index 60a78c7..50c9f20 100644
--- a/networking/libiproute/ll_types.c
+++ b/networking/libiproute/ll_types.c
@@ -187,7 +187,7 @@
#endif /* FEATURE_IP_RARE_PROTOCOLS */
};
- int i;
+ unsigned i;
const char *aname = arphrd_name;
for (i = 0; i < ARRAY_SIZE(arphrd_type); i++) {
if (arphrd_type[i] == type)
diff --git a/networking/sendmail.c b/networking/sendmail.c
index f37d97f..027656d 100644
--- a/networking/sendmail.c
+++ b/networking/sendmail.c
@@ -187,7 +187,7 @@
bb_error_msg_and_die("%s failed", msg);
}
-static int inline smtp_check(const char *fmt, int code)
+static inline int smtp_check(const char *fmt, int code)
{
return smtp_checkp(fmt, NULL, code);
}
@@ -224,7 +224,7 @@
bb_error_msg_and_die("%s failed", msg);
}
-static void inline pop3_check(const char *fmt, const char *param)
+static inline void pop3_check(const char *fmt, const char *param)
{
pop3_checkr(fmt, param, NULL);
}
diff --git a/networking/traceroute.c b/networking/traceroute.c
index c0b4a3f..e9df275 100644
--- a/networking/traceroute.c
+++ b/networking/traceroute.c
@@ -413,7 +413,7 @@
ifc.ifc_buf = (caddr_t)ibuf;
if (ioctl(fd, SIOCGIFCONF, (char *)&ifc) < 0
- || ifc.ifc_len < sizeof(struct ifreq)
+ || ifc.ifc_len < (int)sizeof(struct ifreq)
) {
if (errno == EINVAL)
bb_error_msg_and_die(
diff --git a/networking/udhcp/files.c b/networking/udhcp/files.c
index b13367d..58498f9 100644
--- a/networking/udhcp/files.c
+++ b/networking/udhcp/files.c
@@ -319,7 +319,7 @@
{
FILE *in;
char buffer[READ_CONFIG_BUF_SIZE], *token, *line;
- int i, lineno;
+ unsigned i, lineno;
for (i = 0; i < KWS_WITH_DEFAULTS; i++)
keywords[i].handler(keywords[i].def, keywords[i].var);
@@ -344,7 +344,7 @@
for (i = 0; i < ARRAY_SIZE(keywords); i++) {
if (!strcasecmp(token, keywords[i].keyword)) {
if (!keywords[i].handler(line, keywords[i].var)) {
- bb_error_msg("can't parse line %d in %s at '%s'",
+ bb_error_msg("can't parse line %u in %s at '%s'",
lineno, file, line);
/* reset back to the default value */
keywords[i].handler(keywords[i].def, keywords[i].var);
diff --git a/networking/zcip.c b/networking/zcip.c
index 8db840c..fccb1a4 100644
--- a/networking/zcip.c
+++ b/networking/zcip.c
@@ -162,7 +162,7 @@
/**
* Return milliseconds of random delay, up to "secs" seconds.
*/
-static unsigned ALWAYS_INLINE random_delay_ms(unsigned secs)
+static ALWAYS_INLINE unsigned random_delay_ms(unsigned secs)
{
return rand() % (secs * 1000);
}
diff --git a/procps/kill.c b/procps/kill.c
index b839b38..ed659af 100644
--- a/procps/kill.c
+++ b/procps/kill.c
@@ -106,19 +106,19 @@
argc--;
do_it_now:
+ pid = getpid();
if (killall5) {
pid_t sid;
procps_status_t* p = NULL;
+ /* Find out our own session id */
+ sid = getsid(pid);
/* Now stop all processes */
kill(-1, SIGSTOP);
- /* Find out our own session id */
- pid = getpid();
- sid = getsid(pid);
/* Now kill all processes except our session */
while ((p = procps_scan(p, PSSCAN_PID|PSSCAN_SID))) {
- if (p->sid != sid && p->pid != pid && p->pid != 1)
+ if (p->sid != (unsigned)sid && p->pid != (unsigned)pid && p->pid != 1)
kill(p->pid, signo);
}
/* And let them continue */
@@ -134,7 +134,6 @@
if (killall) {
/* Looks like they want to do a killall. Do that */
- pid = getpid();
while (arg) {
pid_t* pidList;
diff --git a/procps/pgrep.c b/procps/pgrep.c
index f20789c..336fa84 100644
--- a/procps/pgrep.c
+++ b/procps/pgrep.c
@@ -115,7 +115,7 @@
cmd = proc->comm;
/* NB: OPT_INVERT is always 0 or 1 */
if ((regexec(&re_buffer, cmd, 1, re_match, 0) == 0 /* match found */
- && (!OPT_ANCHOR || (re_match[0].rm_so == 0 && re_match[0].rm_eo == strlen(cmd)))) ^ OPT_INVERT
+ && (!OPT_ANCHOR || (re_match[0].rm_so == 0 && re_match[0].rm_eo == (regoff_t)strlen(cmd)))) ^ OPT_INVERT
) {
matched_pid = proc->pid;
if (OPT_LAST) {
diff --git a/procps/pidof.c b/procps/pidof.c
index 46e646d..8ed5a21 100644
--- a/procps/pidof.c
+++ b/procps/pidof.c
@@ -59,7 +59,7 @@
if (opt & OPT_OMIT) {
llist_t *omits_p = omits;
while (omits_p) {
- if (xatoul(omits_p->data) == *pl) {
+ if (xatoul(omits_p->data) == (unsigned long)(*pl)) {
goto omitting;
}
omits_p = omits_p->link;
diff --git a/procps/ps.c b/procps/ps.c
index aeb8cec..cf939bb 100644
--- a/procps/ps.c
+++ b/procps/ps.c
@@ -310,7 +310,7 @@
static const ps_out_t* find_out_spec(const char *name)
{
- int i;
+ unsigned i;
for (i = 0; i < ARRAY_SIZE(out_spec); i++) {
if (!strcmp(name, out_spec[i].name))
return &out_spec[i];
diff --git a/procps/top.c b/procps/top.c
index 206f9e8..ca43376 100644
--- a/procps/top.c
+++ b/procps/top.c
@@ -53,7 +53,7 @@
the next. Used for finding deltas. */
typedef struct save_hist {
unsigned long ticks;
- unsigned pid;
+ pid_t pid;
} save_hist;
typedef int (*cmp_funcp)(top_status_t *P, top_status_t *Q);
@@ -317,7 +317,7 @@
fclose(fp);
/* output memory info */
- if (scr_width > sizeof(scrbuf))
+ if (scr_width > (int)sizeof(scrbuf))
scr_width = sizeof(scrbuf);
snprintf(scrbuf, scr_width,
"Mem: %luK used, %luK free, %luK shrd, %luK buff, %luK cached",
@@ -481,7 +481,7 @@
, SHOW_STAT(pcpu)
#endif
);
- if (col + 1 < scr_width)
+ if ((int)(col + 1) < scr_width)
read_cmdline(line_buf + col, scr_width - col - 1, s->pid, s->comm);
fputs(line_buf, stdout);
/* printf(" %d/%d %lld/%lld", s->pcpu, total_pcpu,
@@ -584,7 +584,7 @@
static void display_topmem_header(int scr_width)
{
char linebuf[128];
- int i;
+ unsigned i;
FILE *fp;
union {
struct {
@@ -703,7 +703,7 @@
ulltoa6_and_space(s->dirty_sh, &line_buf[6*6]);
ulltoa6_and_space(s->stack , &line_buf[7*6]);
line_buf[8*6] = '\0';
- if (scr_width > MIN_WIDTH) {
+ if (scr_width > (int)MIN_WIDTH) {
read_cmdline(&line_buf[8*6], scr_width - MIN_WIDTH, s->pid, s->comm);
}
printf("\n""%.*s", scr_width, line_buf);
diff --git a/shell/ash.c b/shell/ash.c
index 200e2d4..e149070 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -1790,7 +1790,7 @@
#define vartab (G_var.vartab )
#define varinit (G_var.varinit )
#define INIT_G_var() do { \
- int i; \
+ unsigned i; \
(*(struct globals_var**)&ash_ptr_to_globals_var) = xzalloc(sizeof(G_var)); \
barrier(); \
for (i = 0; i < ARRAY_SIZE(varinit_data); i++) { \
@@ -6223,7 +6223,7 @@
if (!eq) /* stop at first non-assignment */
break;
eq++;
- if (name_len == (eq - str)
+ if (name_len == (unsigned)(eq - str)
&& strncmp(str, name, name_len) == 0) {
p = eq;
/* goto value; - WRONG! */
@@ -9500,12 +9500,13 @@
ash_msg("illegal option %co %s", val ? '-' : '+', name);
return 1;
}
- for (i = 0; i < NOPTS; i++)
+ for (i = 0; i < NOPTS; i++) {
if (val) {
out1fmt("%-16s%s\n", optnames(i), optlist[i] ? "on" : "off");
} else {
out1fmt("set %co %s\n", optlist[i] ? '-' : '+', optnames(i));
}
+ }
return 0;
}
static void
@@ -9699,7 +9700,7 @@
return 1;
optnext = optfirst + *param_optind - 1;
- if (*param_optind <= 1 || *optoff < 0 || strlen(optnext[-1]) < *optoff)
+ if (*param_optind <= 1 || *optoff < 0 || (int)strlen(optnext[-1]) < *optoff)
p = NULL;
else
p = optnext[-1] + *optoff;
@@ -11121,7 +11122,7 @@
return readtoken1(c, BASESYNTAX, (char *) NULL, 0);
}
- if (p - xxreadtoken_chars >= xxreadtoken_singles) {
+ if ((size_t)(p - xxreadtoken_chars) >= xxreadtoken_singles) {
if (pgetc() == *p) { /* double occurrence? */
p += xxreadtoken_doubles + 1;
} else {
@@ -11817,7 +11818,8 @@
static int
helpcmd(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED)
{
- int col, i;
+ unsigned col;
+ unsigned i;
out1fmt("\nBuilt-in commands:\n-------------------\n");
for (col = 0, i = 0; i < ARRAY_SIZE(builtintab); i++) {
@@ -12479,6 +12481,7 @@
while ((c = *p++) >= '0' && c <= '9') {
val = (val * 10) + (long)(c - '0');
+ // val is actually 'unsigned long int' and can't get < 0
if (val < (rlim_t) 0)
break;
}
diff --git a/sysklogd/logread.c b/sysklogd/logread.c
index 6f4429f..af93aab 100644
--- a/sysklogd/logread.c
+++ b/sysklogd/logread.c
@@ -70,7 +70,7 @@
int logread_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int logread_main(int argc ATTRIBUTE_UNUSED, char **argv)
{
- int cur;
+ unsigned cur;
int log_semid; /* ipc semaphore id */
int log_shmid; /* ipc shared memory id */
smallint follow = getopt32(argv, "f");
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
index 371b558..f8fc517 100644
--- a/sysklogd/syslogd.c
+++ b/sysklogd/syslogd.c
@@ -570,7 +570,7 @@
timestamp_and_log_internal("syslogd started: BusyBox v" BB_VER);
for (;;) {
- size_t sz;
+ ssize_t sz;
#if ENABLE_FEATURE_SYSLOGD_DUP
last_buf = recvbuf;
diff --git a/util-linux/fdisk_sun.c b/util-linux/fdisk_sun.c
index e595444..eec319c 100644
--- a/util-linux/fdisk_sun.c
+++ b/util-linux/fdisk_sun.c
@@ -230,8 +230,7 @@
create_sunlabel(void)
{
struct hd_geometry geometry;
- unsigned int ndiv;
- int i;
+ unsigned ndiv;
unsigned char c;
const struct sun_predefined_drives *p = NULL;
@@ -241,6 +240,7 @@
memset(MBRbuffer, 0, sizeof(MBRbuffer));
sunlabel->magic = SUN_SSWAP16(SUN_LABEL_MAGIC);
if (!floppy) {
+ unsigned i;
puts("Drive type\n"
" ? auto configure\n"
" 0 custom (with hardware detected defaults)");
diff --git a/util-linux/getopt.c b/util-linux/getopt.c
index 2da3481..31790d2 100644
--- a/util-linux/getopt.c
+++ b/util-linux/getopt.c
@@ -147,7 +147,7 @@
static int generate_output(char **argv, int argc, const char *optstr, const struct option *longopts)
{
int exit_code = 0; /* We assume everything will be OK */
- unsigned opt;
+ int opt;
#if ENABLE_GETOPT_LONG
int longindex;
#endif
@@ -173,7 +173,7 @@
#else
getopt(argc, argv, optstr);
#endif
- if (opt == EOF)
+ if (opt == -1)
break;
if (opt == '?' || opt == ':' )
exit_code = 1;
@@ -190,7 +190,7 @@
printf(" %s", normalize(optarg));
else {
printf(" -%c", opt);
- charptr = strchr(optstr,opt);
+ charptr = strchr(optstr, opt);
if (charptr != NULL && *++charptr == ':')
printf(" %s",
normalize(optarg ? optarg : ""));
diff --git a/util-linux/mount.c b/util-linux/mount.c
index 292f877..3cfbc56 100644
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -307,7 +307,7 @@
// Loop through options
for (;;) {
- size_t i;
+ unsigned i;
char *comma = strchr(options, ',');
const char *option_str = mount_option_str;
diff --git a/util-linux/volume_id/unused_ufs.c b/util-linux/volume_id/unused_ufs.c
index c666b86..8693758 100644
--- a/util-linux/volume_id/unused_ufs.c
+++ b/util-linux/volume_id/unused_ufs.c
@@ -167,7 +167,7 @@
static const short offsets[] = { 0, 8, 64, 256 };
uint32_t magic;
- int i;
+ unsigned i;
struct ufs_super_block *ufs;
dbg("probing at offset 0x%llx", (unsigned long long) off);
diff --git a/util-linux/volume_id/volume_id.c b/util-linux/volume_id/volume_id.c
index aec96a2..d81f3f9 100644
--- a/util-linux/volume_id/volume_id.c
+++ b/util-linux/volume_id/volume_id.c
@@ -152,7 +152,7 @@
int volume_id_probe_all(struct volume_id *id, uint64_t off, uint64_t size)
{
- size_t i;
+ unsigned i;
if (id == NULL)
return -EINVAL;