~ecs/yasu-busybox

531a74408aa644d63bd3dcba68995423cafc9fcc — Eyal Sawady 1 year, 1 month ago b1f02f2 + dac0a7d master
Periodic update

Merge branch 'master' of git://git.busybox.net/busybox
227 files changed, 864 insertions(+), 739 deletions(-)

M Config.in
M archival/bbunzip.c
M archival/bzip2.c
M archival/dpkg.c
M archival/gzip.c
M archival/libarchive/data_extract_all.c
M archival/libarchive/decompress_bunzip2.c
M archival/libarchive/decompress_gunzip.c
M archival/libarchive/decompress_uncompress.c
M archival/libarchive/decompress_unlzma.c
M archival/libarchive/decompress_unxz.c
M archival/libarchive/get_header_ar.c
M archival/libarchive/get_header_cpio.c
M archival/libarchive/get_header_tar.c
M archival/libarchive/open_transformer.c
M archival/libarchive/seek_by_jump.c
M archival/libarchive/unpack_ar_archive.c
M archival/lzop.c
M archival/rpm.c
M archival/tar.c
M archival/unzip.c
M console-tools/loadfont.c
M console-tools/loadkmap.c
M console-tools/openvt.c
M console-tools/showkey.c
M coreutils/cp.c
M coreutils/cut.c
M coreutils/date.c
M coreutils/df.c
M coreutils/echo.c
M coreutils/env.c
M coreutils/expand.c
M coreutils/expr.c
M coreutils/id.c
M coreutils/install.c
M coreutils/ln.c
M coreutils/logname.c
M coreutils/md5_sha1_sum.c
M coreutils/od_bloaty.c
M coreutils/paste.c
M coreutils/printf.c
M coreutils/rm.c
M coreutils/sort.c
M coreutils/split.c
M coreutils/stty.c
M coreutils/tail.c
M coreutils/test.c
M coreutils/tr.c
M coreutils/uudecode.c
M coreutils/uuencode.c
M debianutils/start_stop_daemon.c
M e2fsprogs/chattr.c
M e2fsprogs/fsck.c
M editors/awk.c
M editors/diff.c
M editors/ed.c
M editors/patch_bbox.c
M editors/patch_toybox.c
M editors/sed.c
M editors/vi.c
M findutils/find.c
M findutils/xargs.c
M include/libbb.h
M init/bootchartd.c
M init/init.c
M libbb/appletlib.c
M libbb/bb_getgroups.c
M libbb/bbunit.c
M libbb/capability.c
M libbb/change_identity.c
M libbb/copy_file.c
M libbb/copyfd.c
M libbb/die_if_bad_username.c
M libbb/dump.c
M libbb/fflush_stdout_and_exit.c
M libbb/get_console.c
M libbb/get_volsize.c
M libbb/getpty.c
M libbb/herror_msg.c
M libbb/mtab.c
M libbb/perror_nomsg.c
M libbb/perror_nomsg_and_die.c
M libbb/pw_encrypt.c
M libbb/read_printf.c
M libbb/safe_poll.c
M libbb/selinux_common.c
M libbb/time.c
M libbb/unicode.c
M libbb/update_passwd.c
M libbb/uuencode.c
M libbb/verror_msg.c
M libbb/warn_ignoring_args.c
M libbb/xconnect.c
M libbb/xfuncs.c
M libbb/xfuncs_printf.c
M libbb/xgetcwd.c
M libbb/xgethostbyname.c
M loginutils/addgroup.c
M loginutils/adduser.c
M loginutils/chpasswd.c
M loginutils/deluser.c
M loginutils/getty.c
M loginutils/login.c
M loginutils/su.c
M loginutils/sulogin.c
M mailutils/mail.c
M mailutils/popmaildir.c
M mailutils/sendmail.c
M miscutils/bc.c
M miscutils/chat.c
M miscutils/crond.c
M miscutils/crontab.c
M miscutils/dc.c
M miscutils/devfsd.c
M miscutils/devmem.c
M miscutils/fbsplash.c
M miscutils/flash_eraseall.c
M miscutils/hdparm.c
M miscutils/hexedit.c
M miscutils/i2c_tools.c
M miscutils/inotifyd.c
M miscutils/nandwrite.c
M miscutils/rfkill.c
M miscutils/rx.c
M miscutils/time.c
M miscutils/ubi_tools.c
M miscutils/ubirename.c
M modutils/modutils-24.c
M modutils/rmmod.c
M networking/arp.c
M networking/arping.c
M networking/dnsd.c
M networking/ether-wake.c
M networking/ftpgetput.c
M networking/hostname.c
M networking/httpd.c
M networking/ifconfig.c
M networking/ifplugd.c
M networking/ifupdown.c
M networking/inetd.c
M networking/ipcalc.c
M networking/isrv.c
M networking/libiproute/ipaddress.c
M networking/libiproute/ipneigh.c
M networking/libiproute/iproute.c
M networking/libiproute/iptunnel.c
M networking/libiproute/libnetlink.c
M networking/libiproute/utils.c
M networking/nbd-client.c
M networking/nc.c
M networking/nc_bloaty.c
M networking/netstat.c
M networking/nslookup.c
M networking/ntpd.c
M networking/ping.c
M networking/route.c
M networking/slattach.c
M networking/tcpudp.c
M networking/telnetd.c
M networking/tftp.c
M networking/tls.c
M networking/tls.h
M networking/traceroute.c
M networking/udhcp/arpping.c
M networking/udhcp/common.c
M networking/udhcp/common.h
M networking/udhcp/d6_dhcpc.c
M networking/udhcp/d6_packet.c
M networking/udhcp/d6_socket.c
M networking/udhcp/dhcpc.c
M networking/udhcp/dhcpd.c
M networking/udhcp/dhcprelay.c
M networking/udhcp/packet.c
M networking/udhcp/signalpipe.c
M networking/udhcp/socket.c
M networking/wget.c
M networking/zcip.c
M printutils/lpr.c
M procps/kill.c
M procps/mpstat.c
M procps/powertop.c
M procps/pstree.c
M procps/top.c
M runit/chpst.c
M runit/svlogd.c
M selinux/chcon.c
M selinux/getenforce.c
M selinux/getsebool.c
M selinux/load_policy.c
M selinux/runcon.c
M selinux/sestatus.c
M selinux/setenforce.c
M selinux/setfiles.c
M selinux/setsebool.c
M shell/hush.c
M shell/shell_common.c
M sysklogd/klogd.c
M sysklogd/logread.c
M sysklogd/syslogd.c
M util-linux/acpid.c
M util-linux/dmesg.c
M util-linux/eject.c
M util-linux/fdformat.c
M util-linux/fdisk.c
M util-linux/flock.c
M util-linux/fsck_minix.c
M util-linux/getopt.c
M util-linux/hwclock.c
M util-linux/ipcs.c
M util-linux/last.c
M util-linux/losetup.c
M util-linux/mdev.c
M util-linux/mesg.c
M util-linux/mkfs_ext2.c
M util-linux/mkfs_minix.c
M util-linux/mkfs_reiser.c
M util-linux/mkfs_vfat.c
M util-linux/mkswap.c
M util-linux/mount.c
M util-linux/nsenter.c
M util-linux/rdate.c
M util-linux/readprofile.c
M util-linux/rtcwake.c
M util-linux/setpriv.c
M util-linux/switch_root.c
M util-linux/uevent.c
M util-linux/unshare.c
M Config.in => Config.in +13 -0
@@ 661,6 661,19 @@ config WERROR

	Most people should answer N.

config WARN_SIMPLE_MSG
	bool "Warn about single parameter bb_xx_msg calls"
	default n
	help
	This will cause warnings to be shown for any instances of
	bb_error_msg(), bb_error_msg_and_die(), bb_perror_msg(),
	bb_perror_msg_and_die(), bb_herror_msg() or bb_herror_msg_and_die()
	being called with a single parameter. In these cases the equivalent
	bb_simple_xx_msg function should be used instead.
	Note that use of STRERROR_FMT may give false positives.

	If you aren't developing busybox, say N here.

choice
	prompt "Additional debugging library"
	default NO_DEBUG_LIB

M archival/bbunzip.c => archival/bbunzip.c +1 -1
@@ 114,7 114,7 @@ int FAST_FUNC bbunpack(char **argv,

		/* Check that the input is sane */
		if (!(option_mask32 & BBUNPK_OPT_FORCE) && isatty(STDIN_FILENO)) {
			bb_error_msg_and_die("compressed data not read from terminal, "
			bb_simple_error_msg_and_die("compressed data not read from terminal, "
					"use -f to force it");
		}


M archival/bzip2.c => archival/bzip2.c +2 -2
@@ 145,7 145,7 @@ IF_DESKTOP(long long) int bz_write(bz_stream *strm, void* rbuf, ssize_t rlen, vo
			if (n2 != n) {
				if (n2 >= 0)
					errno = 0; /* prevent bogus error message */
				bb_perror_msg(n2 >= 0 ? "short write" : bb_msg_write_error);
				bb_simple_perror_msg(n2 >= 0 ? "short write" : bb_msg_write_error);
				return -1;
			}
		}


@@ 187,7 187,7 @@ IF_DESKTOP(long long) int FAST_FUNC compressStream(transformer_state_t *xstate U
	while (1) {
		count = full_read(STDIN_FILENO, rbuf, IOBUF_SIZE);
		if (count < 0) {
			bb_perror_msg(bb_msg_read_error);
			bb_simple_perror_msg(bb_msg_read_error);
			total = -1;
			break;
		}

M archival/dpkg.c => archival/dpkg.c +7 -7
@@ 487,7 487,7 @@ static void add_split_dependencies(common_node_t *parent_node, const char *whole
					} else if (strncmp(version, ">=", offset_ch) == 0) {
						edge->operator = VER_MORE_EQUAL;
					} else {
						bb_error_msg_and_die("illegal operator");
						bb_simple_error_msg_and_die("illegal operator");
					}
				}
				/* skip to start of version numbers */


@@ 730,7 730,7 @@ static void set_status(const unsigned status_node_num, const char *new_value, co
			status = new_value_num;
			break;
		default:
			bb_error_msg_and_die("DEBUG ONLY: this shouldnt happen");
			bb_simple_error_msg_and_die("DEBUG ONLY: this shouldnt happen");
	}

	new_status = xasprintf("%s %s %s", name_hashtable[want], name_hashtable[flag], name_hashtable[status]);


@@ 944,10 944,10 @@ static void write_status_file(deb_file_t **deb_file)
	/* Create a separate backfile to dpkg */
	if (rename("/var/lib/dpkg/status", "/var/lib/dpkg/status.udeb.bak") == -1) {
		if (errno != ENOENT)
			bb_error_msg_and_die("can't create backup status file");
			bb_simple_error_msg_and_die("can't create backup status file");
		/* Its ok if renaming the status file fails because status
		 * file doesn't exist, maybe we are starting from scratch */
		bb_error_msg("no status file found, creating new one");
		bb_simple_error_msg("no status file found, creating new one");
	}

	xrename("/var/lib/dpkg/status.udeb", "/var/lib/dpkg/status");


@@ 1816,7 1816,7 @@ int dpkg_main(int argc UNUSED_PARAM, char **argv)
			init_archive_deb_control(archive_handle);
			deb_file[deb_count]->control_file = deb_extract_control_file_to_buffer(archive_handle, control_list);
			if (deb_file[deb_count]->control_file == NULL) {
				bb_error_msg_and_die("can't extract control file");
				bb_simple_error_msg_and_die("can't extract control file");
			}
			deb_file[deb_count]->filename = xstrdup(argv[0]);
			package_num = fill_package_struct(deb_file[deb_count]->control_file);


@@ 1879,13 1879,13 @@ int dpkg_main(int argc UNUSED_PARAM, char **argv)
		argv++;
	}
	if (!deb_count)
		bb_error_msg_and_die("no package files specified");
		bb_simple_error_msg_and_die("no package files specified");
	deb_file[deb_count] = NULL;

	/* Check that the deb file arguments are installable */
	if (!(opt & OPT_force_ignore_depends)) {
		if (!check_deps(deb_file, 0 /*, deb_count*/)) {
			bb_error_msg_and_die("dependency check failed");
			bb_simple_error_msg_and_die("dependency check failed");
		}
	}


M archival/gzip.c => archival/gzip.c +2 -2
@@ 99,7 99,7 @@ aa:      85.1% -- replaced with aa.gz
/* Diagnostic functions */
#ifdef DEBUG
static int verbose;
#  define Assert(cond,msg) { if (!(cond)) bb_error_msg(msg); }
#  define Assert(cond,msg) { if (!(cond)) bb_simple_error_msg(msg); }
#  define Trace(x) fprintf x
#  define Tracev(x) {if (verbose) fprintf x; }
#  define Tracevv(x) {if (verbose > 1) fprintf x; }


@@ 787,7 787,7 @@ static void check_match(IPos start, IPos match, int length)
	/* check that the match is indeed a match */
	if (memcmp(G1.window + match, G1.window + start, length) != 0) {
		bb_error_msg(" start %d, match %d, length %d", start, match, length);
		bb_error_msg("invalid match");
		bb_simple_error_msg("invalid match");
	}
	if (verbose > 1) {
		bb_error_msg("\\[%d,%d]", start - match, length);

M archival/libarchive/data_extract_all.c => archival/libarchive/data_extract_all.c +2 -2
@@ 103,7 103,7 @@ void FAST_FUNC data_extract_all(archive_handle_t *archive_handle)
		struct stat existing_sb;
		if (lstat(dst_name, &existing_sb) == -1) {
			if (errno != ENOENT) {
				bb_perror_msg_and_die("can't stat old file");
				bb_simple_perror_msg_and_die("can't stat old file");
			}
		}
		else if (existing_sb.st_mtime >= file_header->mtime) {


@@ 207,7 207,7 @@ void FAST_FUNC data_extract_all(archive_handle_t *archive_handle)
		}
		break;
	default:
		bb_error_msg_and_die("unrecognized file type");
		bb_simple_error_msg_and_die("unrecognized file type");
	}

	if (!S_ISLNK(file_header->mode)) {

M archival/libarchive/decompress_bunzip2.c => archival/libarchive/decompress_bunzip2.c +1 -1
@@ 817,7 817,7 @@ unpack_bz2_stream(transformer_state_t *xstate)
			break;
		}
		if (bd->headerCRC != bd->totalCRC) {
			bb_error_msg("CRC error");
			bb_simple_error_msg("CRC error");
			break;
		}


M archival/libarchive/decompress_gunzip.c => archival/libarchive/decompress_gunzip.c +7 -7
@@ 1012,7 1012,7 @@ inflate_unzip_internal(STATE_PARAM transformer_state_t *xstate)
	error_msg = "corrupted data";
	if (setjmp(error_jmp)) {
		/* Error from deep inside zip machinery */
		bb_error_msg(error_msg);
		bb_simple_error_msg(error_msg);
		n = -1;
		goto ret;
	}


@@ 1085,7 1085,7 @@ static int top_up(STATE_PARAM unsigned n)
		bytebuffer_offset = 0;
		bytebuffer_size = full_read(gunzip_src_fd, &bytebuffer[count], bytebuffer_max - count);
		if ((int)bytebuffer_size < 0) {
			bb_error_msg(bb_msg_read_error);
			bb_simple_error_msg(bb_msg_read_error);
			return 0;
		}
		bytebuffer_size += count;


@@ 1211,7 1211,7 @@ unpack_gz_stream(transformer_state_t *xstate)

		if (full_read(xstate->src_fd, &magic2, 2) != 2) {
 bad_magic:
			bb_error_msg("invalid magic");
			bb_simple_error_msg("invalid magic");
			return -1;
		}
		if (magic2 == COMPRESS_MAGIC) {


@@ 1233,7 1233,7 @@ unpack_gz_stream(transformer_state_t *xstate)

 again:
	if (!check_header_gzip(PASS_STATE xstate)) {
		bb_error_msg("corrupted data");
		bb_simple_error_msg("corrupted data");
		total = -1;
		goto ret;
	}


@@ 1246,7 1246,7 @@ unpack_gz_stream(transformer_state_t *xstate)
	total += n;

	if (!top_up(PASS_STATE 8)) {
		bb_error_msg("corrupted data");
		bb_simple_error_msg("corrupted data");
		total = -1;
		goto ret;
	}


@@ 1254,7 1254,7 @@ unpack_gz_stream(transformer_state_t *xstate)
	/* Validate decompression - crc */
	v32 = buffer_read_le_u32(PASS_STATE_ONLY);
	if ((~gunzip_crc) != v32) {
		bb_error_msg("crc error");
		bb_simple_error_msg("crc error");
		total = -1;
		goto ret;
	}


@@ 1262,7 1262,7 @@ unpack_gz_stream(transformer_state_t *xstate)
	/* Validate decompression - size */
	v32 = buffer_read_le_u32(PASS_STATE_ONLY);
	if ((uint32_t)gunzip_bytes_out != v32) {
		bb_error_msg("incorrect length");
		bb_simple_error_msg("incorrect length");
		total = -1;
	}


M archival/libarchive/decompress_uncompress.c => archival/libarchive/decompress_uncompress.c +5 -5
@@ 113,7 113,7 @@ unpack_Z_stream(transformer_state_t *xstate)
	/* xread isn't good here, we have to return - caller may want
	 * to do some cleanup (e.g. delete incomplete unpacked file etc) */
	if (full_read(xstate->src_fd, inbuf, 1) != 1) {
		bb_error_msg("short read");
		bb_simple_error_msg("short read");
		goto err;
	}



@@ 166,7 166,7 @@ unpack_Z_stream(transformer_state_t *xstate)
		if (insize < (int) (IBUFSIZ + 64) - IBUFSIZ) {
			rsize = safe_read(xstate->src_fd, inbuf + insize, IBUFSIZ);
			if (rsize < 0)
				bb_error_msg_and_die(bb_msg_read_error);
				bb_simple_error_msg_and_die(bb_msg_read_error);
			insize += rsize;
		}



@@ 200,7 200,7 @@ unpack_Z_stream(transformer_state_t *xstate)

			if (oldcode == -1) {
				if (code >= 256)
					bb_error_msg_and_die("corrupted data"); /* %ld", code); */
					bb_simple_error_msg_and_die("corrupted data"); /* %ld", code); */
				oldcode = code;
				finchar = (int) oldcode;
				outbuf[outpos++] = (unsigned char) finchar;


@@ 236,7 236,7 @@ unpack_Z_stream(transformer_state_t *xstate)
						insize, posbits, p[-1], p[0], p[1], p[2], p[3],
						(posbits & 07));
*/
					bb_error_msg("corrupted data");
					bb_simple_error_msg("corrupted data");
					goto err;
				}



@@ 247,7 247,7 @@ unpack_Z_stream(transformer_state_t *xstate)
			/* Generate output characters in reverse order */
			while (code >= 256) {
				if (stackp <= &htabof(0))
					bb_error_msg_and_die("corrupted data");
					bb_simple_error_msg_and_die("corrupted data");
				*--stackp = tab_suffixof(code);
				code = tab_prefixof(code);
			}

M archival/libarchive/decompress_unlzma.c => archival/libarchive/decompress_unlzma.c +3 -3
@@ 59,7 59,7 @@ static void rc_read(rc_t *rc)
//TODO: return -1 instead
//This will make unlzma delete broken unpacked file on unpack errors
	if (buffer_size <= 0)
		bb_error_msg_and_die("unexpected EOF");
		bb_simple_error_msg_and_die("unexpected EOF");
	rc->buffer_end = RC_BUFFER + buffer_size;
	rc->ptr = RC_BUFFER;
}


@@ 234,7 234,7 @@ unpack_lzma_stream(transformer_state_t *xstate)
	if (full_read(xstate->src_fd, &header, sizeof(header)) != sizeof(header)
	 || header.pos >= (9 * 5 * 5)
	) {
		bb_error_msg("bad lzma header");
		bb_simple_error_msg("bad lzma header");
		return -1;
	}



@@ 513,7 513,7 @@ unpack_lzma_stream(transformer_state_t *xstate)
			 * potentially more detailed information).
			 * Do not fail silently.
			 */
			bb_error_msg("corrupted data");
			bb_simple_error_msg("corrupted data");
			total_written = -1; /* failure */
		}
		rc_free(rc);

M archival/libarchive/decompress_unxz.c => archival/libarchive/decompress_unxz.c +2 -2
@@ 74,7 74,7 @@ unpack_xz_stream(transformer_state_t *xstate)
		if (iobuf.in_pos == iobuf.in_size) {
			int rd = safe_read(xstate->src_fd, membuf, BUFSIZ);
			if (rd < 0) {
				bb_error_msg(bb_msg_read_error);
				bb_simple_error_msg(bb_msg_read_error);
				total = -1;
				break;
			}


@@ 123,7 123,7 @@ unpack_xz_stream(transformer_state_t *xstate)
			continue;
		}
		if (xz_result != XZ_OK && xz_result != XZ_UNSUPPORTED_CHECK) {
			bb_error_msg("corrupted data");
			bb_simple_error_msg("corrupted data");
			total = -1;
			break;
		}

M archival/libarchive/get_header_ar.c => archival/libarchive/get_header_ar.c +4 -4
@@ 22,7 22,7 @@ static unsigned read_num(char *str, int base, int len)
	 * on misformatted numbers bb_strtou returns all-ones */
	err = bb_strtou(str, NULL, base);
	if (err == -1)
		bb_error_msg_and_die("invalid ar header");
		bb_simple_error_msg_and_die("invalid ar header");
	return err;
}



@@ 53,7 53,7 @@ char FAST_FUNC get_header_ar(archive_handle_t *archive_handle)
	archive_handle->offset += 60;

	if (ar.formatted.magic[0] != '`' || ar.formatted.magic[1] != '\n')
		bb_error_msg_and_die("invalid ar header");
		bb_simple_error_msg_and_die("invalid ar header");

	/*
	 * Note that the fields MUST be read in reverse order as


@@ 86,7 86,7 @@ char FAST_FUNC get_header_ar(archive_handle_t *archive_handle)
			return get_header_ar(archive_handle);
		}
#else
		bb_error_msg_and_die("long filenames not supported");
		bb_simple_error_msg_and_die("long filenames not supported");
#endif
	}
	/* Only size is always present, the rest may be missing in


@@ 107,7 107,7 @@ char FAST_FUNC get_header_ar(archive_handle_t *archive_handle)
		long_offset = read_num(&ar.formatted.name[1], 10,
				       sizeof(ar.formatted.name) - 1);
		if (long_offset >= archive_handle->ar__long_name_size) {
			bb_error_msg_and_die("can't resolve long filename");
			bb_simple_error_msg_and_die("can't resolve long filename");
		}
		typed->name = xstrdup(archive_handle->ar__long_names + long_offset);
	} else

M archival/libarchive/get_header_cpio.c => archival/libarchive/get_header_cpio.c +3 -3
@@ 33,14 33,14 @@ char FAST_FUNC get_header_cpio(archive_handle_t *archive_handle)
		goto create_hardlinks;
	}
	if (size != 110) {
		bb_error_msg_and_die("short read");
		bb_simple_error_msg_and_die("short read");
	}
	archive_handle->offset += 110;

	if (!is_prefixed_with(&cpio_header[0], "07070")
	 || (cpio_header[5] != '1' && cpio_header[5] != '2')
	) {
		bb_error_msg_and_die("unsupported cpio format, use newc or crc");
		bb_simple_error_msg_and_die("unsupported cpio format, use newc or crc");
	}

	if (sscanf(cpio_header + 6,


@@ 50,7 50,7 @@ char FAST_FUNC get_header_cpio(archive_handle_t *archive_handle)
			&inode, &mode, &uid, &gid,
			&nlink, &mtime, &size,
			&major, &minor, &namesize) != 10)
		bb_error_msg_and_die("damaged cpio file");
		bb_simple_error_msg_and_die("damaged cpio file");
	file_header->mode = mode;
	/* "cpio -R USER:GRP" support: */
	if (archive_handle->cpio__owner.uid != (uid_t)-1L)

M archival/libarchive/get_header_tar.c => archival/libarchive/get_header_tar.c +7 -7
@@ 32,7 32,7 @@ static unsigned long long getOctal(char *str, int len)
	if (*end != '\0' && *end != ' ') {
		int8_t first = str[0];
		if (!(first & 0x80))
			bb_error_msg_and_die("corrupted octal value in tar header");
			bb_simple_error_msg_and_die("corrupted octal value in tar header");
		/*
		 * GNU tar uses "base-256 encoding" for very large numbers.
		 * Encoding is binary, with highest bit always set as a marker


@@ 100,7 100,7 @@ static void process_pax_hdr(archive_handle_t *archive_handle, unsigned sz, int g
		 || errno != EINVAL
		 || *end != ' '
		) {
			bb_error_msg("malformed extended header, skipped");
			bb_simple_error_msg("malformed extended header, skipped");
			// More verbose version:
			//bb_error_msg("malformed extended header at %"OFF_FMT"d, skipped",
			//		archive_handle->offset - (sz + len));


@@ 194,13 194,13 @@ char FAST_FUNC get_header_tar(archive_handle_t *archive_handle)
		 * the very first read fails. Grrr.
		 */
		if (archive_handle->offset == 0)
			bb_error_msg("short read");
			bb_simple_error_msg("short read");
		/* this merely signals end of archive, not exit(1): */
		return EXIT_FAILURE;
	}
	if (i != 512) {
		IF_FEATURE_TAR_AUTODETECT(goto autodetect;)
		bb_error_msg_and_die("short read");
		bb_simple_error_msg_and_die("short read");
	}

#else


@@ 243,11 243,11 @@ char FAST_FUNC get_header_tar(archive_handle_t *archive_handle)
			goto err;
		if (setup_unzip_on_fd(archive_handle->src_fd, /*fail_if_not_compressed:*/ 0) != 0)
 err:
			bb_error_msg_and_die("invalid tar magic");
			bb_simple_error_msg_and_die("invalid tar magic");
		archive_handle->offset = 0;
		goto again_after_align;
#endif
		bb_error_msg_and_die("invalid tar magic");
		bb_simple_error_msg_and_die("invalid tar magic");
	}

	/* Do checksum on headers.


@@ 282,7 282,7 @@ char FAST_FUNC get_header_tar(archive_handle_t *archive_handle)
	if (sum_u != sum
	    IF_FEATURE_TAR_OLDSUN_COMPATIBILITY(&& sum_s != sum)
	) {
		bb_error_msg_and_die("invalid tar header checksum");
		bb_simple_error_msg_and_die("invalid tar header checksum");
	}

	/* GET_OCTAL trashes subsequent field, therefore we call it

M archival/libarchive/open_transformer.c => archival/libarchive/open_transformer.c +3 -3
@@ 15,7 15,7 @@ int FAST_FUNC check_signature16(transformer_state_t *xstate, unsigned magic16)
	if (!xstate->signature_skipped) {
		uint16_t magic2;
		if (full_read(xstate->src_fd, &magic2, 2) != 2 || magic2 != magic16) {
			bb_error_msg("invalid magic");
			bb_simple_error_msg("invalid magic");
			return -1;
		}
		xstate->signature_skipped = 2;


@@ 46,7 46,7 @@ ssize_t FAST_FUNC transformer_write(transformer_state_t *xstate, const void *buf
	} else {
		nwrote = full_write(xstate->dst_fd, buf, bufsize);
		if (nwrote != (ssize_t)bufsize) {
			bb_perror_msg("write");
			bb_simple_perror_msg("write");
			nwrote = -1;
			goto ret;
		}


@@ 205,7 205,7 @@ static transformer_state_t *setup_transformer_on_fd(int fd, int fail_if_not_comp

	/* No known magic seen */
	if (fail_if_not_compressed)
		bb_error_msg_and_die("no gzip"
		bb_simple_error_msg_and_die("no gzip"
			IF_FEATURE_SEAMLESS_BZ2("/bzip2")
			IF_FEATURE_SEAMLESS_XZ("/xz")
			" magic");

M archival/libarchive/seek_by_jump.c => archival/libarchive/seek_by_jump.c +1 -1
@@ 13,6 13,6 @@ void FAST_FUNC seek_by_jump(int fd, off_t amount)
		if (errno == ESPIPE)
			seek_by_read(fd, amount);
		else
			bb_perror_msg_and_die("seek failure");
			bb_simple_perror_msg_and_die("seek failure");
	}
}

M archival/libarchive/unpack_ar_archive.c => archival/libarchive/unpack_ar_archive.c +1 -1
@@ 12,7 12,7 @@ void FAST_FUNC unpack_ar_archive(archive_handle_t *ar_archive)

	xread(ar_archive->src_fd, magic, AR_MAGIC_LEN);
	if (!is_prefixed_with(magic, AR_MAGIC)) {
		bb_error_msg_and_die("invalid ar magic");
		bb_simple_error_msg_and_die("invalid ar magic");
	}
	ar_archive->offset += AR_MAGIC_LEN;


M archival/lzop.c => archival/lzop.c +7 -7
@@ 752,7 752,7 @@ static FAST_FUNC void lzo_check(
	 */
	uint32_t c = fn(init, buf, len);
	if (c != ref)
		bb_error_msg_and_die("checksum error");
		bb_simple_error_msg_and_die("checksum error");
}

/**********************************************************************/


@@ 785,15 785,15 @@ static NOINLINE int lzo_decompress(uint32_t h_flags32)
		/* error if split file */
		if (dst_len == 0xffffffffL)
			/* should not happen - not yet implemented */
			bb_error_msg_and_die("this file is a split lzop file");
			bb_simple_error_msg_and_die("this file is a split lzop file");

		if (dst_len > MAX_BLOCK_SIZE)
			bb_error_msg_and_die("corrupted data");
			bb_simple_error_msg_and_die("corrupted data");

		/* read compressed block size */
		src_len = read32();
		if (src_len <= 0 || src_len > dst_len)
			bb_error_msg_and_die("corrupted data");
			bb_simple_error_msg_and_die("corrupted data");

		if (dst_len > block_size) {
			if (b2) {


@@ 846,7 846,7 @@ static NOINLINE int lzo_decompress(uint32_t h_flags32)
				r = lzo1x_decompress_safe(b1, src_len, b2, &d /*, NULL*/);

			if (r != 0 /*LZO_E_OK*/ || dst_len != d) {
				bb_error_msg_and_die("corrupted data");
				bb_simple_error_msg_and_die("corrupted data");
			}
			dst = b2;
		} else {


@@ 913,7 913,7 @@ static void check_magic(void)
	unsigned char magic[sizeof(lzop_magic)];
	xread(0, magic, sizeof(magic));
	if (memcmp(magic, lzop_magic, sizeof(lzop_magic)) != 0)
		bb_error_msg_and_die("bad magic number");
		bb_simple_error_msg_and_die("bad magic number");
}

/**********************************************************************/


@@ 1049,7 1049,7 @@ static void lzo_set_method(header_t *h)
		else if (option_mask32 & OPT_8)
			level = 8;
#else
		bb_error_msg_and_die("high compression not compiled in");
		bb_simple_error_msg_and_die("high compression not compiled in");
#endif
	}


M archival/rpm.c => archival/rpm.c +1 -1
@@ 543,7 543,7 @@ int rpm2cpio_main(int argc UNUSED_PARAM, char **argv)
	}

	if (bb_copyfd_eof(rpm_fd, STDOUT_FILENO) < 0)
		bb_error_msg_and_die("error unpacking");
		bb_simple_error_msg_and_die("error unpacking");

	if (ENABLE_FEATURE_CLEAN_UP) {
		close(rpm_fd);

M archival/tar.c => archival/tar.c +5 -5
@@ 369,7 369,7 @@ static int writeTarHeader(struct TarBallInfo *tbInfo,
		/* If it is larger than 100 bytes, bail out */
		if (header.linkname[sizeof(header.linkname)-1]) {
			free(lpath);
			bb_error_msg("names longer than "NAME_SIZE_STR" chars not supported");
			bb_simple_error_msg("names longer than "NAME_SIZE_STR" chars not supported");
			return FALSE;
		}
# endif


@@ 542,7 542,7 @@ static int FAST_FUNC writeFileToTarball(const char *fileName, struct stat *statb

# if !ENABLE_FEATURE_TAR_GNU_EXTENSIONS
	if (strlen(header_name) >= NAME_SIZE) {
		bb_error_msg("names longer than "NAME_SIZE_STR" chars not supported");
		bb_simple_error_msg("names longer than "NAME_SIZE_STR" chars not supported");
		return TRUE;
	}
# endif


@@ 715,13 715,13 @@ static NOINLINE int writeTarFile(
		freeHardLinkInfo(&tbInfo->hlInfoHead);

	if (errorFlag)
		bb_error_msg("error exit delayed from previous errors");
		bb_simple_error_msg("error exit delayed from previous errors");

# if SEAMLESS_COMPRESSION
	if (gzip) {
		int status;
		if (safe_waitpid(-1, &status, 0) == -1)
			bb_perror_msg("waitpid");
			bb_simple_perror_msg("waitpid");
		else if (!WIFEXITED(status) || WEXITSTATUS(status))
			/* gzip was killed or has exited with nonzero! */
			errorFlag = TRUE;


@@ 1150,7 1150,7 @@ int tar_main(int argc UNUSED_PARAM, char **argv)
		if (opt & OPT_CREATE) {
			/* Make sure there is at least one file to tar up */
			if (tar_handle->accept == NULL)
				bb_error_msg_and_die("empty archive");
				bb_simple_error_msg_and_die("empty archive");

			tar_fd = STDOUT_FILENO;
			/* Mimicking GNU tar 1.15.1: */

M archival/unzip.c => archival/unzip.c +9 -9
@@ 322,7 322,7 @@ static uint32_t read_next_cdf(uint32_t cdf_offset, cdf_header_t *cdf)
static void die_if_bad_fnamesize(unsigned sz)
{
	if (sz > 0xfff) /* more than 4k?! no funny business please */
		bb_error_msg_and_die("bad archive");
		bb_simple_error_msg_and_die("bad archive");
}

static void unzip_skip(off_t skip)


@@ 359,7 359,7 @@ static void unzip_extract_symlink(llist_t **symlink_placeholders,
		xread(zip_fd, target, zip->fmt.ucmpsize);
	} else {
#if 1
		bb_error_msg_and_die("compressed symlink is not supported");
		bb_simple_error_msg_and_die("compressed symlink is not supported");
#else
		transformer_state_t xstate;
		init_transformer_state(&xstate);


@@ 399,10 399,10 @@ static void unzip_extract(zip_header_t *zip, int dst_fd)
	if (zip->fmt.method == 8) {
		/* Method 8 - inflate */
		if (inflate_unzip(&xstate) < 0)
			bb_error_msg_and_die("inflate error");
			bb_simple_error_msg_and_die("inflate error");
		/* Validate decompression - crc */
		if (zip->fmt.crc32 != (xstate.crc32 ^ 0xffffffffL)) {
			bb_error_msg_and_die("crc error");
			bb_simple_error_msg_and_die("crc error");
		}
	}
#if ENABLE_FEATURE_UNZIP_BZIP2


@@ 412,7 412,7 @@ static void unzip_extract(zip_header_t *zip, int dst_fd)
		 */
		xstate.bytes_out = unpack_bz2_stream(&xstate);
		if (xstate.bytes_out < 0)
			bb_error_msg_and_die("inflate error");
			bb_simple_error_msg_and_die("inflate error");
	}
#endif
#if ENABLE_FEATURE_UNZIP_LZMA


@@ 420,7 420,7 @@ static void unzip_extract(zip_header_t *zip, int dst_fd)
		/* Not tested yet */
		xstate.bytes_out = unpack_lzma_stream(&xstate);
		if (xstate.bytes_out < 0)
			bb_error_msg_and_die("inflate error");
			bb_simple_error_msg_and_die("inflate error");
	}
#endif
#if ENABLE_FEATURE_UNZIP_XZ


@@ 428,7 428,7 @@ static void unzip_extract(zip_header_t *zip, int dst_fd)
		/* Not tested yet */
		xstate.bytes_out = unpack_xz_stream(&xstate);
		if (xstate.bytes_out < 0)
			bb_error_msg_and_die("inflate error");
			bb_simple_error_msg_and_die("inflate error");
	}
#endif
	else {


@@ 439,7 439,7 @@ static void unzip_extract(zip_header_t *zip, int dst_fd)
	if (zip->fmt.ucmpsize != xstate.bytes_out) {
		/* Don't die. Who knows, maybe len calculation
		 * was botched somewhere. After all, crc matched! */
		bb_error_msg("bad length");
		bb_simple_error_msg("bad length");
	}
}



@@ 447,7 447,7 @@ static void my_fgets80(char *buf80)
{
	fflush_all();
	if (!fgets(buf80, 80, stdin)) {
		bb_perror_msg_and_die("can't read standard input");
		bb_simple_perror_msg_and_die("can't read standard input");
	}
}


M console-tools/loadfont.c => console-tools/loadfont.c +10 -10
@@ 225,7 225,7 @@ static void do_loadtable(int fd, unsigned char *inbuf, int tailsz, int fontsize,
				if (unicode == PSF2_SEPARATOR) {
					break;
				} else if (unicode == PSF2_STARTSEQ) {
					bb_error_msg_and_die("unicode sequences not implemented");
					bb_simple_error_msg_and_die("unicode sequences not implemented");
				} else if (unicode >= 0xC0) {
					if (unicode >= 0xFC)
						unicode &= 0x01, maxct = 5;


@@ 239,12 239,12 @@ static void do_loadtable(int fd, unsigned char *inbuf, int tailsz, int fontsize,
						unicode &= 0x1F, maxct = 1;
					do {
						if (tailsz <= 0 || *inbuf < 0x80 || *inbuf > 0xBF)
							bb_error_msg_and_die("illegal UTF-8 character");
							bb_simple_error_msg_and_die("illegal UTF-8 character");
						--tailsz;
						unicode = (unicode << 6) + (*inbuf++ & 0x3F);
					} while (--maxct > 0);
				} else if (unicode >= 0x80) {
					bb_error_msg_and_die("illegal UTF-8 character");
					bb_simple_error_msg_and_die("illegal UTF-8 character");
				}
#else
				return;


@@ 281,7 281,7 @@ static void do_load(int fd, unsigned char *buffer, size_t len)

	if (len >= sizeof(struct psf1_header) && PSF1_MAGIC_OK(psf1h(buffer))) {
		if (psf1h(buffer)->mode > PSF1_MAXMODE)
			bb_error_msg_and_die("unsupported psf file mode");
			bb_simple_error_msg_and_die("unsupported psf file mode");
		if (psf1h(buffer)->mode & PSF1_MODE512)
			fontsize = 512;
		if (psf1h(buffer)->mode & PSF1_MODEHASTAB)


@@ 292,7 292,7 @@ static void do_load(int fd, unsigned char *buffer, size_t len)
#if ENABLE_FEATURE_LOADFONT_PSF2
	if (len >= sizeof(struct psf2_header) && PSF2_MAGIC_OK(psf2h(buffer))) {
		if (psf2h(buffer)->version > PSF2_MAXVERSION)
			bb_error_msg_and_die("unsupported psf file version");
			bb_simple_error_msg_and_die("unsupported psf file version");
		fontsize = psf2h(buffer)->length;
		if (psf2h(buffer)->flags & PSF2_HAS_UNICODE_TABLE)
			has_table = 2;


@@ 311,19 311,19 @@ static void do_load(int fd, unsigned char *buffer, size_t len)
	} else
#endif
	{
		bb_error_msg_and_die("input file: bad length or unsupported font type");
		bb_simple_error_msg_and_die("input file: bad length or unsupported font type");
	}

#if !defined(PIO_FONTX) || defined(__sparc__)
	if (fontsize != 256)
		bb_error_msg_and_die("only fontsize 256 supported");
		bb_simple_error_msg_and_die("only fontsize 256 supported");
#endif

	table = font + fontsize * charsize;
	buffer += len;

	if (table > buffer || (!has_table && table != buffer))
		bb_error_msg_and_die("input file: bad length");
		bb_simple_error_msg_and_die("input file: bad length");

	do_loadfont(fd, font, height, width, charsize, fontsize);



@@ 361,7 361,7 @@ int loadfont_main(int argc UNUSED_PARAM, char **argv)
	buffer = xmalloc_read(STDIN_FILENO, &len);
	// xmalloc_open_zipped_read_close(filename, &len);
	if (!buffer)
		bb_perror_msg_and_die("error reading input font");
		bb_simple_perror_msg_and_die("error reading input font");
	do_load(get_console_fd_or_die(), buffer, len);

	return EXIT_SUCCESS;


@@ 502,7 502,7 @@ int setfont_main(int argc UNUSED_PARAM, char **argv)
				if (a < 0 || a >= E_TABSZ
				 || b < 0 || b > 65535
				) {
					bb_error_msg_and_die("map format");
					bb_simple_error_msg_and_die("map format");
				}
				// patch map
				unicodes[a] = b;

M console-tools/loadkmap.c => console-tools/loadkmap.c +1 -1
@@ 69,7 69,7 @@ int loadkmap_main(int argc UNUSED_PARAM, char **argv)

	xread(STDIN_FILENO, flags, 7);
	if (!is_prefixed_with(flags, BINARY_KEYMAP_MAGIC))
		bb_error_msg_and_die("not a valid binary keymap");
		bb_simple_error_msg_and_die("not a valid binary keymap");

	xread(STDIN_FILENO, flags, MAX_NR_KEYMAPS);


M console-tools/openvt.c => console-tools/openvt.c +2 -2
@@ 87,7 87,7 @@ static int get_vt_fd(void)
	fd = open(DEV_CONSOLE, O_RDONLY | O_NONBLOCK);
	if (fd >= 0 && !not_vt_fd(fd))
		return fd;
	bb_error_msg_and_die("can't find open VT");
	bb_simple_error_msg_and_die("can't find open VT");
}

static int find_free_vtno(void)


@@ 98,7 98,7 @@ static int find_free_vtno(void)
	errno = 0;
	/*xfunc_error_retval = 3; - do we need compat? */
	if (ioctl(fd, VT_OPENQRY, &vtno) != 0 || vtno <= 0)
		bb_perror_msg_and_die("can't find open VT");
		bb_simple_perror_msg_and_die("can't find open VT");
// Not really needed, grep for DAEMON_CLOSE_EXTRA_FDS
//	if (fd > 2)
//		close(fd);

M console-tools/showkey.c => console-tools/showkey.c +1 -1
@@ 56,7 56,7 @@ static void xset1(struct termios *t)
{
	int ret = tcsetattr(STDIN_FILENO, TCSAFLUSH, t);
	if (ret) {
		bb_perror_msg("can't tcsetattr for stdin");
		bb_simple_perror_msg("can't tcsetattr for stdin");
	}
}


M coreutils/cp.c => coreutils/cp.c +2 -2
@@ 217,7 217,7 @@ int cp_main(int argc, char **argv)
		//	flags, FILEUTILS_RMDEST, OPT_parents);
		if (flags & OPT_parents) {
			if (!(d_flags & 2)) {
				bb_error_msg_and_die("with --parents, the destination must be a directory");
				bb_simple_error_msg_and_die("with --parents, the destination must be a directory");
			}
		}
		if (flags & FILEUTILS_RMDEST) {


@@ 236,7 236,7 @@ int cp_main(int argc, char **argv)
			goto DO_COPY; /* NB: argc==2 -> *++argv==last */
		}
	} else if (flags & FILEUTILS_NO_TARGET_DIR) {
		bb_error_msg_and_die("too many arguments");
		bb_simple_error_msg_and_die("too many arguments");
	}

	while (1) {

M coreutils/cut.c => coreutils/cut.c +3 -3
@@ 209,11 209,11 @@ int cut_main(int argc UNUSED_PARAM, char **argv)
//	argc -= optind;
	argv += optind;
	if (!(opt & (CUT_OPT_BYTE_FLGS | CUT_OPT_CHAR_FLGS | CUT_OPT_FIELDS_FLGS)))
		bb_error_msg_and_die("expected a list of bytes, characters, or fields");
		bb_simple_error_msg_and_die("expected a list of bytes, characters, or fields");

	if (opt & CUT_OPT_DELIM_FLGS) {
		if (ltok[0] && ltok[1]) { /* more than 1 char? */
			bb_error_msg_and_die("the delimiter must be a single character");
			bb_simple_error_msg_and_die("the delimiter must be a single character");
		}
		delim = ltok[0];
	}


@@ 288,7 288,7 @@ int cut_main(int argc UNUSED_PARAM, char **argv)

		/* make sure we got some cut positions out of all that */
		if (nlists == 0)
			bb_error_msg_and_die("missing list of positions");
			bb_simple_error_msg_and_die("missing list of positions");

		/* now that the lists are parsed, we need to sort them to make life
		 * easier on us when it comes time to print the chars / fields / lines

M coreutils/date.c => coreutils/date.c +1 -1
@@ 304,7 304,7 @@ int date_main(int argc UNUSED_PARAM, char **argv)

		/* if setting time, set it */
		if ((opt & OPT_SET) && stime(&ts.tv_sec) < 0) {
			bb_perror_msg("can't set date");
			bb_simple_perror_msg("can't set date");
		}
	}


M coreutils/df.c => coreutils/df.c +1 -1
@@ 178,7 178,7 @@ int df_main(int argc UNUSED_PARAM, char **argv)
	if (!argv[0]) {
		mount_table = setmntent(bb_path_mtab_file, "r");
		if (!mount_table)
			bb_perror_msg_and_die(bb_path_mtab_file);
			bb_simple_perror_msg_and_die(bb_path_mtab_file);
	}

	while (1) {

M coreutils/echo.c => coreutils/echo.c +1 -1
@@ 188,7 188,7 @@ int echo_main(int argc UNUSED_PARAM, char **argv)
	/*r =*/ full_write(STDOUT_FILENO, buffer, out - buffer);
	free(buffer);
	if (/*WRONG:r < 0*/ errno) {
		bb_perror_msg(bb_msg_write_error);
		bb_simple_perror_msg(bb_msg_write_error);
		return 1;
	}
	return 0;

M coreutils/env.c => coreutils/env.c +1 -1
@@ 79,7 79,7 @@ int env_main(int argc UNUSED_PARAM, char **argv)

	while (*argv && (strchr(*argv, '=') != NULL)) {
		if (putenv(*argv) < 0) {
			bb_perror_msg_and_die("putenv");
			bb_simple_perror_msg_and_die("putenv");
		}
		++argv;
	}

M coreutils/expand.c => coreutils/expand.c +1 -1
@@ 247,7 247,7 @@ int expand_main(int argc UNUSED_PARAM, char **argv)
	/* Now close stdin also */
	/* (if we didn't read from it, it's a no-op) */
	if (fclose(stdin))
		bb_perror_msg_and_die(bb_msg_standard_input);
		bb_simple_perror_msg_and_die(bb_msg_standard_input);

	fflush_stdout_and_exit(exit_status);
}

M coreutils/expr.c => coreutils/expr.c +8 -8
@@ 249,7 249,7 @@ static arith_t arithmetic_common(VALUE *l, VALUE *r, int op)
	arith_t li, ri;

	if (!toarith(l) || !toarith(r))
		bb_error_msg_and_die("non-numeric argument");
		bb_simple_error_msg_and_die("non-numeric argument");
	li = l->u.i;
	ri = r->u.i;
	if (op == '+')


@@ 259,7 259,7 @@ static arith_t arithmetic_common(VALUE *l, VALUE *r, int op)
	if (op == '*')
		return li * ri;
	if (ri == 0)
		bb_error_msg_and_die("division by zero");
		bb_simple_error_msg_and_die("division by zero");
	if (op == '/')
		return li / ri;
	return li % ri;


@@ 319,19 319,19 @@ static VALUE *eval7(void)
	VALUE *v;

	if (!*G.args)
		bb_error_msg_and_die("syntax error");
		bb_simple_error_msg_and_die("syntax error");

	if (nextarg("(")) {
		G.args++;
		v = eval();
		if (!nextarg(")"))
			bb_error_msg_and_die("syntax error");
			bb_simple_error_msg_and_die("syntax error");
		G.args++;
		return v;
	}

	if (nextarg(")"))
		bb_error_msg_and_die("syntax error");
		bb_simple_error_msg_and_die("syntax error");

	return str_value(*G.args++);
}


@@ 353,7 353,7 @@ static VALUE *eval6(void)
	G.args++; /* We have a valid token, so get the next argument.  */
	if (key == 1) { /* quote */
		if (!*G.args)
			bb_error_msg_and_die("syntax error");
			bb_simple_error_msg_and_die("syntax error");
		return str_value(*G.args++);
	}
	if (key == 2) { /* length */


@@ 546,11 546,11 @@ int expr_main(int argc UNUSED_PARAM, char **argv)
	xfunc_error_retval = 2; /* coreutils compat */
	G.args = argv + 1;
	if (*G.args == NULL) {
		bb_error_msg_and_die("too few arguments");
		bb_simple_error_msg_and_die("too few arguments");
	}
	v = eval();
	if (*G.args)
		bb_error_msg_and_die("syntax error");
		bb_simple_error_msg_and_die("syntax error");
	if (v->type == INTEGER)
		printf("%" PF_REZ "d\n", PF_REZ_TYPE v->u.i);
	else

M coreutils/id.c => coreutils/id.c +1 -1
@@ 231,7 231,7 @@ int id_main(int argc UNUSED_PARAM, char **argv)
			}
		} else if (n < 0) { /* error in get_groups() */
			if (ENABLE_DESKTOP)
				bb_error_msg_and_die("can't get groups");
				bb_simple_error_msg_and_die("can't get groups");
			return EXIT_FAILURE;
		}
		if (ENABLE_FEATURE_CLEAN_UP)

M coreutils/install.c => coreutils/install.c +1 -1
@@ 238,7 238,7 @@ int install_main(int argc, char **argv)
				args[2] = dest;
				args[3] = NULL;
				if (spawn_and_wait(args)) {
					bb_perror_msg("strip");
					bb_simple_perror_msg("strip");
					ret = EXIT_FAILURE;
				}
			}

M coreutils/ln.c => coreutils/ln.c +1 -1
@@ 69,7 69,7 @@ int ln_main(int argc, char **argv)
	argc -= optind;

	if ((opts & LN_LINKFILE) && argc > 2) {
		bb_error_msg_and_die("-T accepts 2 args max");
		bb_simple_error_msg_and_die("-T accepts 2 args max");
	}

	if (!argv[1]) {

M coreutils/logname.c => coreutils/logname.c +1 -1
@@ 56,5 56,5 @@ int logname_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
		return fflush_all();
	}

	bb_perror_msg_and_die("getlogin");
	bb_simple_perror_msg_and_die("getlogin");
}

M coreutils/md5_sha1_sum.c => coreutils/md5_sha1_sum.c +1 -1
@@ 300,7 300,7 @@ int md5_sha1_sum_main(int argc UNUSED_PARAM, char **argv)
				}
				if (filename_ptr == NULL) {
					if (flags & FLAG_WARN) {
						bb_error_msg("invalid format");
						bb_simple_error_msg("invalid format");
					}
					count_failed++;
					return_value = EXIT_FAILURE;

M coreutils/od_bloaty.c => coreutils/od_bloaty.c +6 -6
@@ 536,7 536,7 @@ check_and_close(void)
	}

	if (ferror(stdout)) {
		bb_error_msg_and_die(bb_msg_write_error);
		bb_simple_error_msg_and_die(bb_msg_write_error);
	}
}



@@ 841,7 841,7 @@ skip(off_t n_skip)
	}

	if (n_skip)
		bb_error_msg_and_die("can't skip past end of combined input");
		bb_simple_error_msg_and_die("can't skip past end of combined input");
}




@@ 1308,10 1308,10 @@ int od_main(int argc UNUSED_PARAM, char **argv)
					pseudo_start = o2;
					argv[1] = NULL;
				} else {
					bb_error_msg_and_die("the last two arguments must be offsets");
					bb_simple_error_msg_and_die("the last two arguments must be offsets");
				}
			} else { /* >3 args */
				bb_error_msg_and_die("too many arguments");
				bb_simple_error_msg_and_die("too many arguments");
			}

			if (pseudo_start >= 0) {


@@ 1332,7 1332,7 @@ int od_main(int argc UNUSED_PARAM, char **argv)
	if (option_mask32 & OPT_N) {
		end_offset = n_bytes_to_skip + max_bytes_to_format;
		if (end_offset < n_bytes_to_skip)
			bb_error_msg_and_die("SKIP + SIZE is too large");
			bb_simple_error_msg_and_die("SKIP + SIZE is too large");
	}

	if (G.n_specs == 0) {


@@ 1389,7 1389,7 @@ int od_main(int argc UNUSED_PARAM, char **argv)
		dump(n_bytes_to_skip, end_offset);

	if (fclose(stdin))
		bb_perror_msg_and_die(bb_msg_standard_input);
		bb_simple_perror_msg_and_die(bb_msg_standard_input);

	return G.exit_code;
}

M coreutils/paste.c => coreutils/paste.c +1 -1
@@ 116,7 116,7 @@ int paste_main(int argc UNUSED_PARAM, char **argv)

	if (opt & PASTE_OPT_DELIMITERS) {
		if (!delims[0])
			bb_error_msg_and_die("-d '' is not supported");
			bb_simple_error_msg_and_die("-d '' is not supported");
		/* unknown mappings are not changed: "\z" -> '\\' 'z' */
		/* trailing backslash, if any, is preserved */
		del_cnt = strcpy_and_process_escape_sequences(delims, delims) - delims;

M coreutils/printf.c => coreutils/printf.c +1 -1
@@ 430,7 430,7 @@ int printf_main(int argc UNUSED_PARAM, char **argv)
		if (ENABLE_ASH_PRINTF
		 && applet_name[0] != 'p'
		) {
			bb_error_msg("usage: printf FORMAT [ARGUMENT...]");
			bb_simple_error_msg("usage: printf FORMAT [ARGUMENT...]");
			return 2; /* bash compat */
		}
		bb_show_usage();

M coreutils/rm.c => coreutils/rm.c +1 -1
@@ 62,7 62,7 @@ int rm_main(int argc UNUSED_PARAM, char **argv)
			const char *base = bb_get_last_path_component_strip(*argv);

			if (DOT_OR_DOTDOT(base)) {
				bb_error_msg("can't remove '.' or '..'");
				bb_simple_error_msg("can't remove '.' or '..'");
			} else if (remove_file(*argv, flags) >= 0) {
				continue;
			}

M coreutils/sort.c => coreutils/sort.c +6 -6
@@ 277,7 277,7 @@ static int compare_keys(const void *xarg, const void *yarg)
		/* Perform actual comparison */
		switch (flags & (FLAG_n | FLAG_g | FLAG_M | FLAG_V)) {
		default:
			bb_error_msg_and_die("unknown sort type");
			bb_simple_error_msg_and_die("unknown sort type");
			break;
#if defined(HAVE_STRVERSCMP) && HAVE_STRVERSCMP == 1
		case FLAG_V:


@@ 398,10 398,10 @@ static unsigned str2u(char **str)
{
	unsigned long lu;
	if (!isdigit((*str)[0]))
		bb_error_msg_and_die("bad field specification");
		bb_simple_error_msg_and_die("bad field specification");
	lu = strtoul(*str, str, 10);
	if ((sizeof(long) > sizeof(int) && lu > INT_MAX) || !lu)
		bb_error_msg_and_die("bad field specification");
		bb_simple_error_msg_and_die("bad field specification");
	return lu;
}
#endif


@@ 461,7 461,7 @@ int sort_main(int argc UNUSED_PARAM, char **argv)
#if ENABLE_FEATURE_SORT_BIG
	if (opts & FLAG_t) {
		if (!str_t[0] || str_t[1])
			bb_error_msg_and_die("bad -t parameter");
			bb_simple_error_msg_and_die("bad -t parameter");
		key_separator = str_t[0];
	}
	/* note: below this point we use option_mask32, not opts,


@@ 504,10 504,10 @@ int sort_main(int argc UNUSED_PARAM, char **argv)
					because comma isn't in OPT_STR */
				idx = strchr(OPT_STR, *str_k);
				if (!idx)
					bb_error_msg_and_die("unknown key option");
					bb_simple_error_msg_and_die("unknown key option");
				flag = 1 << (idx - OPT_STR);
				if (flag & ~FLAG_allowed_for_k)
					bb_error_msg_and_die("unknown sort type");
					bb_simple_error_msg_and_die("unknown sort type");
				/* b after ',' means strip _trailing_ space */
				if (i && flag == FLAG_b)
					flag = FLAG_bb;

M coreutils/split.c => coreutils/split.c +2 -2
@@ 127,7 127,7 @@ int split_main(int argc UNUSED_PARAM, char **argv)
	}

	if (NAME_MAX < strlen(sfx) + suffix_len)
		bb_error_msg_and_die("suffix too long");
		bb_simple_error_msg_and_die("suffix too long");

	{
		char *char_p = xzalloc(suffix_len + 1);


@@ 147,7 147,7 @@ int split_main(int argc UNUSED_PARAM, char **argv)
		do {
			if (!remaining) {
				if (!pfx)
					bb_error_msg_and_die("suffixes exhausted");
					bb_simple_error_msg_and_die("suffixes exhausted");
				xmove_fd(xopen(pfx, O_WRONLY | O_CREAT | O_TRUNC), 1);
				pfx = next_file(pfx, suffix_len);
				remaining = cnt;

M coreutils/stty.c => coreutils/stty.c +3 -3
@@ 1320,7 1320,7 @@ int stty_main(int argc UNUSED_PARAM, char **argv)
					break;
				case 'F':
					if (file_name)
						bb_error_msg_and_die("only one device may be specified");
						bb_simple_error_msg_and_die("only one device may be specified");
					file_name = &arg[i+1]; /* "-Fdevice" ? */
					if (!file_name[0]) { /* nope, "-F device" */
						int p = k+1; /* argv[p] is argnext */


@@ 1405,13 1405,13 @@ int stty_main(int argc UNUSED_PARAM, char **argv)
	if ((stty_state & (STTY_verbose_output | STTY_recoverable_output)) ==
		(STTY_verbose_output | STTY_recoverable_output)
	) {
		bb_error_msg_and_die("-a and -g are mutually exclusive");
		bb_simple_error_msg_and_die("-a and -g are mutually exclusive");
	}
	/* Specifying -a or -g with non-options is an error */
	if ((stty_state & (STTY_verbose_output | STTY_recoverable_output))
	 && !(stty_state & STTY_noargs)
	) {
		bb_error_msg_and_die("modes may not be set when -a or -g is used");
		bb_simple_error_msg_and_die("modes may not be set when -a or -g is used");
	}

	/* Now it is safe to start doing things */

M coreutils/tail.c => coreutils/tail.c +2 -2
@@ 89,7 89,7 @@ static ssize_t tail_read(int fd, char *buf, size_t count)

	r = full_read(fd, buf, count);
	if (r < 0) {
		bb_perror_msg(bb_msg_read_error);
		bb_simple_perror_msg(bb_msg_read_error);
		G.exitcode = EXIT_FAILURE;
	}



@@ 186,7 186,7 @@ int tail_main(int argc, char **argv)
	} while (++i < argc);

	if (!nfiles)
		bb_error_msg_and_die("no files");
		bb_simple_error_msg_and_die("no files");

	/* prepare the buffer */
	tailbufsize = BUFSIZ;

M coreutils/test.c => coreutils/test.c +2 -2
@@ 832,12 832,12 @@ int test_main(int argc, char **argv)
		--argc;
		if (!arg0[1]) { /* "[" ? */
			if (NOT_LONE_CHAR(argv[argc], ']')) {
				bb_error_msg("missing ]");
				bb_simple_error_msg("missing ]");
				return 2;
			}
		} else { /* assuming "[[" */
			if (strcmp(argv[argc], "]]") != 0) {
				bb_error_msg("missing ]]");
				bb_simple_error_msg("missing ]]");
				return 2;
			}
		}

M coreutils/tr.c => coreutils/tr.c +2 -2
@@ 308,7 308,7 @@ int tr_main(int argc UNUSED_PARAM, char **argv)
		str1_length = complement(str1, str1_length);
	if (*argv) {
		if (argv[0][0] == '\0')
			bb_error_msg_and_die("STRING2 cannot be empty");
			bb_simple_error_msg_and_die("STRING2 cannot be empty");
		str2_length = expand(*argv, &str2);
		map(vector, str1, str1_length,
				str2, str2_length);


@@ 333,7 333,7 @@ int tr_main(int argc UNUSED_PARAM, char **argv)
			read_chars = safe_read(STDIN_FILENO, str1, TR_BUFSIZ);
			if (read_chars <= 0) {
				if (read_chars < 0)
					bb_perror_msg_and_die(bb_msg_read_error);
					bb_simple_perror_msg_and_die(bb_msg_read_error);
				break;
			}
			in_index = 0;

M coreutils/uudecode.c => coreutils/uudecode.c +4 -4
@@ 82,7 82,7 @@ static void FAST_FUNC read_stduu(FILE *src_stream, FILE *dst_stream, int flags U
			continue;
		}
		if (encoded_len > 60) {
			bb_error_msg_and_die("line too long");
			bb_simple_error_msg_and_die("line too long");
		}

		dst = line;


@@ 108,7 108,7 @@ static void FAST_FUNC read_stduu(FILE *src_stream, FILE *dst_stream, int flags U
		fwrite(line, 1, dst - line, dst_stream);
		free(line);
	}
	bb_error_msg_and_die("short file");
	bb_simple_error_msg_and_die("short file");
}
#endif



@@ 166,7 166,7 @@ int uudecode_main(int argc UNUSED_PARAM, char **argv)
		/* fclose_if_not_stdin(src_stream); - redundant */
		return EXIT_SUCCESS;
	}
	bb_error_msg_and_die("no 'begin' line");
	bb_simple_error_msg_and_die("no 'begin' line");
}
#endif



@@ 216,7 216,7 @@ int base64_main(int argc UNUSED_PARAM, char **argv)
			if (!size)
				break;
			if ((ssize_t)size < 0)
				bb_perror_msg_and_die(bb_msg_read_error);
				bb_simple_perror_msg_and_die(bb_msg_read_error);
			/* Encode the buffer we just read in */
			bb_uuencode(dst_buf, src_buf, size, bb_uuenc_tbl_base64);
			xwrite(STDOUT_FILENO, dst_buf, 4 * ((size + 2) / 3));

M coreutils/uuencode.c => coreutils/uuencode.c +1 -1
@@ 66,7 66,7 @@ int uuencode_main(int argc UNUSED_PARAM, char **argv)
		if (!size)
			break;
		if ((ssize_t)size < 0)
			bb_perror_msg_and_die(bb_msg_read_error);
			bb_simple_perror_msg_and_die(bb_msg_read_error);
		/* Encode the buffer we just read in */
		bb_uuencode(dst_buf, src_buf, size, tbl);
		bb_putchar('\n');

M debianutils/start_stop_daemon.c => debianutils/start_stop_daemon.c +2 -2
@@ 317,7 317,7 @@ static void do_procinit(void)
	}
	closedir(procdir);
	if (!pid)
		bb_error_msg_and_die("nothing in /proc - not mounted?");
		bb_simple_error_msg_and_die("nothing in /proc - not mounted?");
}

static int do_stop(void)


@@ 337,7 337,7 @@ static int do_stop(void)
	} else if (userspec) {
		what = xasprintf("process(es) owned by '%s'", userspec);
	} else {
		bb_error_msg_and_die("internal error, please report");
		bb_simple_error_msg_and_die("internal error, please report");
	}

	if (!G.found_procs) {

M e2fsprogs/chattr.c => e2fsprogs/chattr.c +3 -3
@@ 196,11 196,11 @@ int chattr_main(int argc UNUSED_PARAM, char **argv)

	/* run sanity checks on all the arguments given us */
	if ((g.flags & OPT_SET) && (g.flags & (OPT_ADD|OPT_REM)))
		bb_error_msg_and_die("= is incompatible with - and +");
		bb_simple_error_msg_and_die("= is incompatible with - and +");
	if (g.rf & g.af)
		bb_error_msg_and_die("can't set and unset a flag");
		bb_simple_error_msg_and_die("can't set and unset a flag");
	if (!g.flags)
		bb_error_msg_and_die("must use '-v', =, - or +");
		bb_simple_error_msg_and_die("must use '-v', =, - or +");

	/* now run chattr on all the files passed to us */
	do change_attributes(*argv, &g); while (*++argv);

M e2fsprogs/fsck.c => e2fsprogs/fsck.c +3 -3
@@ 431,10 431,10 @@ static int wait_one(int flags)
			if (errno == EINTR)
				continue;
			if (errno == ECHILD) { /* paranoia */
				bb_error_msg("wait: no more children");
				bb_simple_error_msg("wait: no more children");
				return -1;
			}
			bb_perror_msg("wait");
			bb_simple_perror_msg("wait");
			continue;
		}
		prev = NULL;


@@ 919,7 919,7 @@ static void compile_fs_type(char *fs_type)
			if (G.fs_type_negated == -1)
				G.fs_type_negated = negate;
			if (G.fs_type_negated != negate)
				bb_error_msg_and_die(
				bb_simple_error_msg_and_die(
"either all or none of the filesystem types passed to -t must be prefixed "
"with 'no' or '!'");
		}

M editors/awk.c => editors/awk.c +2 -2
@@ 2633,7 2633,7 @@ static var *evaluate(node *op, var *res)
					if (opn == '|') {
						rsm->F = popen(R.s, "w");
						if (rsm->F == NULL)
							bb_perror_msg_and_die("popen");
							bb_simple_perror_msg_and_die("popen");
						rsm->is_pipe = 1;
					} else {
						rsm->F = xfopen(R.s, opn=='w' ? "w" : "a");


@@ 3246,7 3246,7 @@ int awk_main(int argc UNUSED_PARAM, char **argv)
	argv += optind;
	//argc -= optind;
	if (opt & OPT_W)
		bb_error_msg("warning: option -W is ignored");
		bb_simple_error_msg("warning: option -W is ignored");
	if (opt & OPT_F) {
		unescape_string_in_place(opt_F);
		setvar_s(intvar[FS], opt_F);

M editors/diff.c => editors/diff.c +2 -2
@@ 1006,7 1006,7 @@ int diff_main(int argc UNUSED_PARAM, char **argv)
	xfunc_error_retval = 1;

	if (gotstdin && (S_ISDIR(stb[0].st_mode) || S_ISDIR(stb[1].st_mode)))
		bb_error_msg_and_die("can't compare stdin to a directory");
		bb_simple_error_msg_and_die("can't compare stdin to a directory");

	/* Compare metadata to check if the files are the same physical file.
	 *


@@ 1037,7 1037,7 @@ int diff_main(int argc UNUSED_PARAM, char **argv)
#if ENABLE_FEATURE_DIFF_DIR
		diffdir(file, s_start);
#else
		bb_error_msg_and_die("no support for directory comparison");
		bb_simple_error_msg_and_die("no support for directory comparison");
#endif
	} else {
		bool dirfile = S_ISDIR(stb[0].st_mode) || S_ISDIR(stb[1].st_mode);

M editors/ed.c => editors/ed.c +17 -17
@@ 165,7 165,7 @@ static NOINLINE int searchLines(const char *str, int num1, int num2)

	if (*str == '\0') {
		if (searchString[0] == '\0') {
			bb_error_msg("no previous search string");
			bb_simple_error_msg("no previous search string");
			return 0;
		}
		str = searchString;


@@ 228,7 228,7 @@ static const char* getNum(const char *cp, smallint *retHaveNum, int *retNum)
			case '\'':
				cp++;
				if ((unsigned)(*cp - 'a') >= 26) {
					bb_error_msg("bad mark name");
					bb_simple_error_msg("bad mark name");
					return NULL;
				}
				haveNum = TRUE;


@@ 314,7 314,7 @@ static int insertLine(int num, const char *data, int len)
	LINE *newLp, *lp;

	if ((num < 1) || (num > lastNum + 1)) {
		bb_error_msg("inserting at bad line number");
		bb_simple_error_msg("inserting at bad line number");
		return FALSE;
	}



@@ 384,7 384,7 @@ static int readLines(const char *file, int num)
	char *cp;

	if ((num < 1) || (num > lastNum + 1)) {
		bb_error_msg("bad line for read");
		bb_simple_error_msg("bad line for read");
		return FALSE;
	}



@@ 629,7 629,7 @@ static void subCommand(const char *cmd, int num1, int num2)
	cp = buf;

	if (isblank(*cp) || (*cp == '\0')) {
		bb_error_msg("bad delimiter for substitute");
		bb_simple_error_msg("bad delimiter for substitute");
		return;
	}



@@ 638,7 638,7 @@ static void subCommand(const char *cmd, int num1, int num2)

	cp = strchr(cp, delim);
	if (cp == NULL) {
		bb_error_msg("missing 2nd delimiter for substitute");
		bb_simple_error_msg("missing 2nd delimiter for substitute");
		return;
	}



@@ 660,13 660,13 @@ static void subCommand(const char *cmd, int num1, int num2)
			printFlag = TRUE;
			break;
		default:
			bb_error_msg("unknown option for substitute");
			bb_simple_error_msg("unknown option for substitute");
			return;
	}

	if (*oldStr == '\0') {
		if (searchString[0] == '\0') {
			bb_error_msg("no previous search string");
			bb_simple_error_msg("no previous search string");
			return;
		}
		oldStr = searchString;


@@ 846,7 846,7 @@ static void doCommands(void)

		case 'f':
			if (*cp != '\0' && *cp != ' ') {
				bb_error_msg("bad file command");
				bb_simple_error_msg("bad file command");
				break;
			}
			cp = skip_whitespace(cp);


@@ 870,7 870,7 @@ static void doCommands(void)
		case 'k':
			cp = skip_whitespace(cp);
			if ((unsigned)(*cp - 'a') >= 26 || cp[1]) {
				bb_error_msg("bad mark name");
				bb_simple_error_msg("bad mark name");
				break;
			}
			marks[(unsigned)(*cp - 'a')] = num2;


@@ 887,7 887,7 @@ static void doCommands(void)
		case 'q':
			cp = skip_whitespace(cp);
			if (have1 || *cp) {
				bb_error_msg("bad quit command");
				bb_simple_error_msg("bad quit command");
				break;
			}
			if (!dirty)


@@ 903,12 903,12 @@ static void doCommands(void)

		case 'r':
			if (*cp != '\0' && *cp != ' ') {
				bb_error_msg("bad read command");
				bb_simple_error_msg("bad read command");
				break;
			}
			cp = skip_whitespace(cp);
			if (*cp == '\0') {
				bb_error_msg("no file name");
				bb_simple_error_msg("no file name");
				break;
			}
			if (!have1)


@@ 925,14 925,14 @@ static void doCommands(void)

		case 'w':
			if (*cp != '\0' && *cp != ' ') {
				bb_error_msg("bad write command");
				bb_simple_error_msg("bad write command");
				break;
			}
			cp = skip_whitespace(cp);
			if (*cp == '\0') {
				cp = fileName;
				if (!cp) {
					bb_error_msg("no file name specified");
					bb_simple_error_msg("no file name specified");
					break;
				}
			}


@@ 960,7 960,7 @@ static void doCommands(void)

		case '.':
			if (have1) {
				bb_error_msg("no arguments allowed");
				bb_simple_error_msg("no arguments allowed");
				break;
			}
			printLines(curNum, curNum, FALSE);


@@ 984,7 984,7 @@ static void doCommands(void)
			break;

		default:
			bb_error_msg("unimplemented command");
			bb_simple_error_msg("unimplemented command");
			break;
		}
	}

M editors/patch_bbox.c => editors/patch_bbox.c +3 -3
@@ 30,7 30,7 @@ static unsigned copy_lines(FILE *src_stream, FILE *dst_stream, unsigned lines_co
			break;
		}
		if (fputs(line, dst_stream) == EOF) {
			bb_perror_msg_and_die("error writing to new file");
			bb_simple_perror_msg_and_die("error writing to new file");
		}
		free(line);
		lines_count--;


@@ 148,7 148,7 @@ int patch_main(int argc UNUSED_PARAM, char **argv)

		new_filename = extract_filename(patch_line, patch_level, "+++ ");
		if (!new_filename) {
			bb_error_msg_and_die("invalid patch");
			bb_simple_error_msg_and_die("invalid patch");
		}

		/* Get access rights from the file to be patched */


@@ 209,7 209,7 @@ int patch_main(int argc UNUSED_PARAM, char **argv)
				/* src_beg_line will be 0 if it's a new file */
				count = src_beg_line - src_cur_line;
				if (copy_lines(src_stream, dst_stream, count)) {
					bb_error_msg_and_die("bad src file");
					bb_simple_error_msg_and_die("bad src file");
				}
				src_cur_line += count;
				dst_cur_line += count;

M editors/patch_toybox.c => editors/patch_toybox.c +1 -1
@@ 200,7 200,7 @@ int copy_tempfile(int fdin, char *name, char **tempname)

	*tempname = xasprintf("%sXXXXXX", name);
	fd = mkstemp(*tempname);
	if(-1 == fd) bb_perror_msg_and_die("no temp file");
	if(-1 == fd) bb_simple_perror_msg_and_die("no temp file");

	// Set permissions of output file
	fstat(fdin, &statbuf);

M editors/sed.c => editors/sed.c +9 -9
@@ 315,7 315,7 @@ static int parse_regex_delim(const char *cmdstr, char **match, char **replace)
	/* verify that the 's' or 'y' is followed by something.  That something
	 * (typically a 'slash') is now our regexp delimiter... */
	if (*cmdstr == '\0')
		bb_error_msg_and_die("bad format in substitution expression");
		bb_simple_error_msg_and_die("bad format in substitution expression");
	delimiter = *cmdstr_ptr++;

	/* save the match string */


@@ 360,7 360,7 @@ static int get_address(const char *my_str, int *linenum, regex_t ** regex)
		} else {
			*regex = G.previous_regex_ptr;
			if (!G.previous_regex_ptr)
				bb_error_msg_and_die("no previous regexp");
				bb_simple_error_msg_and_die("no previous regexp");
		}
		/* Move position to next character after last delimiter */
		pos += (next+1);


@@ 378,7 378,7 @@ static int parse_file_cmd(/*sed_cmd_t *sed_cmd,*/ const char *filecmdstr, char *
	start = skip_whitespace(filecmdstr);
	eol = strchrnul(start, '\n');
	if (eol == start)
		bb_error_msg_and_die("empty filename");
		bb_simple_error_msg_and_die("empty filename");

	if (*eol) {
		/* If lines glued together, put backslash back. */


@@ 468,7 468,7 @@ static int parse_subst_cmd(sed_cmd_t *sed_cmd, const char *substr)
			goto out;
		default:
			dbg("s bad flags:'%s'", substr + idx);
			bb_error_msg_and_die("bad option in substitution expression");
			bb_simple_error_msg_and_die("bad option in substitution expression");
		}
	}
 out:


@@ 688,7 688,7 @@ static void add_cmd(const char *cmdstr)
				idx--; /* if 0, trigger error check below */
			}
			if (idx < 0)
				bb_error_msg_and_die("no address after comma");
				bb_simple_error_msg_and_die("no address after comma");
			sed_cmd->end_line_orig = sed_cmd->end_line;
		}



@@ 706,7 706,7 @@ static void add_cmd(const char *cmdstr)

		/* last part (mandatory) will be a command */
		if (!*cmdstr)
			bb_error_msg_and_die("missing command");
			bb_simple_error_msg_and_die("missing command");
		sed_cmd->cmd = *cmdstr++;
		cmdstr = parse_cmd_args(sed_cmd, cmdstr);



@@ 791,7 791,7 @@ static int do_subst_command(sed_cmd_t *sed_cmd, char **line_p)
	if (!current_regex) {
		current_regex = G.previous_regex_ptr;
		if (!current_regex)
			bb_error_msg_and_die("no previous regexp");
			bb_simple_error_msg_and_die("no previous regexp");
	}
	G.previous_regex_ptr = current_regex;



@@ 962,7 962,7 @@ static void puts_maybe_newline(char *s, FILE *file, char *last_puts_char, char l

	if (ferror(file)) {
		xfunc_error_retval = 4;  /* It's what gnu sed exits with... */
		bb_error_msg_and_die(bb_msg_write_error);
		bb_simple_error_msg_and_die(bb_msg_write_error);
	}
	*last_puts_char = lpc;
}


@@ 1192,7 1192,7 @@ static void process_files(void)
					}
					sed_cmd = sed_cmd->next;
					if (!sed_cmd)
						bb_error_msg_and_die("unterminated {");
						bb_simple_error_msg_and_die("unterminated {");
				}
			}
			continue;

M editors/vi.c => editors/vi.c +1 -1
@@ 1042,7 1042,7 @@ static int readit(void) // read (maybe cursor) key from stdin
			goto again;
		go_bottom_and_clear_to_eol();
		cookmode(); // terminal to "cooked"
		bb_error_msg_and_die("can't read user input");
		bb_simple_error_msg_and_die("can't read user input");
	}
	return c;
}

M findutils/find.c => findutils/find.c +2 -2
@@ 1245,7 1245,7 @@ static action*** parse_params(char **argv)
			 * coreutils expects {} to appear only once in "-exec +"
			 */
			if (all_subst != 1 && ap->filelist)
				bb_error_msg_and_die("only one '{}' allowed for -exec +");
				bb_simple_error_msg_and_die("only one '{}' allowed for -exec +");
# endif
		}
#endif


@@ 1259,7 1259,7 @@ static action*** parse_params(char **argv)
			endarg = argv;
			while (1) {
				if (!*++endarg)
					bb_error_msg_and_die("unpaired '('");
					bb_simple_error_msg_and_die("unpaired '('");
				if (LONE_CHAR(*endarg, '('))
					nested++;
				else if (LONE_CHAR(*endarg, ')') && !--nested) {

M findutils/xargs.c => findutils/xargs.c +2 -2
@@ 665,7 665,7 @@ int xargs_main(int argc UNUSED_PARAM, char **argv)
	}
	/* Sanity check */
	if (n_max_chars <= 0) {
		bb_error_msg_and_die("can't fit single argument within argument list size limit");
		bb_simple_error_msg_and_die("can't fit single argument within argument list size limit");
	}

	buf = xzalloc(n_max_chars + 1);


@@ 716,7 716,7 @@ int xargs_main(int argc UNUSED_PARAM, char **argv)

		if (!G.args[initial_idx]) { /* not even one ARG was added? */
			if (*rem != '\0')
				bb_error_msg_and_die("argument line too long");
				bb_simple_error_msg_and_die("argument line too long");
			if (opt & OPT_NO_EMPTY)
				break;
		}

M include/libbb.h => include/libbb.h +44 -1
@@ 1137,7 1137,7 @@ void exec_prog_or_SHELL(char **argv) NORETURN FAST_FUNC;
({ \
	pid_t bb__xvfork_pid = vfork(); \
	if (bb__xvfork_pid < 0) \
		bb_perror_msg_and_die("vfork"); \
		bb_simple_perror_msg_and_die("vfork"); \
	bb__xvfork_pid; \
})
#if BB_MMU


@@ 1324,13 1324,17 @@ extern void (*die_func)(void);
void xfunc_die(void) NORETURN FAST_FUNC;
void bb_show_usage(void) NORETURN FAST_FUNC;
void bb_error_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))) FAST_FUNC;
void bb_simple_error_msg(const char *s) FAST_FUNC;
void bb_error_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))) FAST_FUNC;
void bb_simple_error_msg_and_die(const char *s) NORETURN FAST_FUNC;
void bb_perror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))) FAST_FUNC;
void bb_simple_perror_msg(const char *s) FAST_FUNC;
void bb_perror_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))) FAST_FUNC;
void bb_simple_perror_msg_and_die(const char *s) NORETURN FAST_FUNC;
void bb_herror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))) FAST_FUNC;
void bb_simple_herror_msg(const char *s) FAST_FUNC;
void bb_herror_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))) FAST_FUNC;
void bb_simple_herror_msg_and_die(const char *s) NORETURN FAST_FUNC;
void bb_perror_nomsg_and_die(void) NORETURN FAST_FUNC;
void bb_perror_nomsg(void) FAST_FUNC;
void bb_verror_msg(const char *s, va_list p, const char *strerr) FAST_FUNC;


@@ 1339,12 1343,51 @@ void bb_logenv_override(void) FAST_FUNC;

#if ENABLE_FEATURE_SYSLOG_INFO
void bb_info_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))) FAST_FUNC;
void bb_simple_info_msg(const char *s) FAST_FUNC;
void bb_vinfo_msg(const char *s, va_list p) FAST_FUNC;
#else
#define bb_info_msg bb_error_msg
#define bb_simple_info_msg bb_simple_error_msg
#define bb_vinfo_msg(s,p) bb_verror_msg(s,p,NULL)
#endif

#if ENABLE_WARN_SIMPLE_MSG
/* If enabled, cause calls to bb_error_msg() et al that only take a single
 * parameter to generate a warning.
 */
static inline void __attribute__ ((deprecated("use bb_simple_error_msg instead")))
	bb_not_simple_error_msg(const char *s) { bb_simple_error_msg(s); }
static inline void __attribute__ ((deprecated("use bb_simple_error_msg_and_die instead"))) NORETURN
	bb_not_simple_error_msg_and_die(const char *s) { bb_simple_error_msg_and_die(s); }
static inline void __attribute__ ((deprecated("use bb_simple_perror_msg instead")))
	bb_not_simple_perror_msg(const char *s) { bb_simple_perror_msg(s); }
static inline void __attribute__ ((deprecated("use bb_simple_perror_msg_and_die instead"))) NORETURN
	bb_not_simple_perror_msg_and_die(const char *s) { bb_simple_perror_msg_and_die(s); }
static inline void __attribute__ ((deprecated("use bb_simple_herror_msg instead")))
	bb_not_simple_herror_msg(const char *s) { bb_simple_herror_msg(s); }
static inline void __attribute__ ((deprecated("use bb_simple_herror_msg_and_die instead"))) NORETURN
	bb_not_simple_herror_msg_and_die(const char *s) { bb_simple_herror_msg_and_die(s); }
static inline void __attribute__ ((deprecated("use bb_simple_info_msg instead")))
	bb_not_simple_info_msg(const char *s) { bb_simple_info_msg(s); }
/* Override bb_error_msg() and related functions with macros that will
 * substitute them for the equivalent bb_not_simple_error_msg() function when
 * they are used with only a single parameter. Macro approach inspired by
 * https://gustedt.wordpress.com/2010/06/08/detect-empty-macro-arguments and
 * https://gustedt.wordpress.com/2010/06/03/default-arguments-for-c99
 */
#define _ARG18(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, ...) _17
#define BB_MSG_KIND(...)           _ARG18(__VA_ARGS__, , , , , , , , , , , , , , , , , _not_simple)
#define _BB_MSG(name, kind, ...)   bb##kind##name(__VA_ARGS__)
#define BB_MSG(name, kind, ...)    _BB_MSG(name, kind, __VA_ARGS__)
#define bb_error_msg(...)          BB_MSG(_error_msg, BB_MSG_KIND(__VA_ARGS__), __VA_ARGS__)
#define bb_error_msg_and_die(...)  BB_MSG(_error_msg_and_die, BB_MSG_KIND(__VA_ARGS__), __VA_ARGS__)
#define bb_perror_msg(...)         BB_MSG(_perror_msg, BB_MSG_KIND(__VA_ARGS__), __VA_ARGS__)
#define bb_perror_msg_and_die(...) BB_MSG(_perror_msg_and_die, BB_MSG_KIND(__VA_ARGS__), __VA_ARGS__)
#define bb_herror_msg(...)         BB_MSG(_herror_msg, BB_MSG_KIND(__VA_ARGS__), __VA_ARGS__)
#define bb_herror_msg_and_die(...) BB_MSG(_herror_msg_and_die, BB_MSG_KIND(__VA_ARGS__), __VA_ARGS__)
#define bb_info_msg(...)           BB_MSG(_info_msg, BB_MSG_KIND(__VA_ARGS__), __VA_ARGS__)
#endif

/* We need to export XXX_main from libbusybox
 * only if we build "individual" binaries
 */

M init/bootchartd.c => init/bootchartd.c +1 -1
@@ 208,7 208,7 @@ static char *make_tempdir(void)
			bb_perror_msg_and_die("can't %smount tmpfs", "un");
		}
#else
		bb_perror_msg_and_die("can't create temporary directory");
		bb_simple_perror_msg_and_die("can't create temporary directory");
#endif
	} else {
		xchdir(tempdir);

M init/init.c => init/init.c +1 -1
@@ 1086,7 1086,7 @@ int init_main(int argc UNUSED_PARAM, char **argv)
		if (getpid() != 1
		 && (!ENABLE_LINUXRC || applet_name[0] != 'l') /* not linuxrc? */
		) {
			bb_error_msg_and_die("must be run as PID 1");
			bb_simple_error_msg_and_die("must be run as PID 1");
		}
#ifdef RB_DISABLE_CAD
		/* Turn off rebooting via CTL-ALT-DEL - we get a

M libbb/appletlib.c => libbb/appletlib.c +5 -5
@@ 631,7 631,7 @@ static void check_suid(int applet_no)
			/* same group / in group */
			m >>= 3;
		if (!(m & S_IXOTH)) /* is x bit not set? */
			bb_error_msg_and_die("you have no permission to run this applet");
			bb_simple_error_msg_and_die("you have no permission to run this applet");

		/* We set effective AND saved ids. If saved-id is not set
		 * like we do below, seteuid(0) can still later succeed! */


@@ 643,7 643,7 @@ static void check_suid(int applet_no)
			rgid = sct->m_ugid.gid;
		/* else: we will set egid = rgid, thus dropping sgid effect */
		if (setresgid(-1, rgid, rgid))
			bb_perror_msg_and_die("setresgid");
			bb_simple_perror_msg_and_die("setresgid");

		/* Are we directed to change uid
		 * (APPLET = s** USER.GROUP or APPLET = S** USER.GROUP)?


@@ 653,7 653,7 @@ static void check_suid(int applet_no)
			uid = sct->m_ugid.uid;
		/* else: we will set euid = ruid, thus dropping suid effect */
		if (setresuid(-1, uid, uid))
			bb_perror_msg_and_die("setresuid");
			bb_simple_perror_msg_and_die("setresuid");

		goto ret;
	}


@@ 663,7 663,7 @@ static void check_suid(int applet_no)

		if (!onetime) {
			onetime = 1;
			bb_error_msg("using fallback suid method");
			bb_simple_error_msg("using fallback suid method");
		}
	}
#   endif


@@ 673,7 673,7 @@ static void check_suid(int applet_no)
		/* Real uid is not 0. If euid isn't 0 too, suid bit
		 * is most probably not set on our executable */
		if (geteuid())
			bb_error_msg_and_die("must be suid to work properly");
			bb_simple_error_msg_and_die("must be suid to work properly");
	} else if (APPLET_SUID(applet_no) == BB_SUID_DROP) {
		/*
		 * Drop all privileges.

M libbb/bb_getgroups.c => libbb/bb_getgroups.c +1 -1
@@ 38,7 38,7 @@ gid_t* FAST_FUNC bb_getgroups(int *ngroups, gid_t *group_array)
			continue;
		}
		/* Some other error (should never happen on Linux) */
		bb_perror_msg_and_die("getgroups");
		bb_simple_perror_msg_and_die("getgroups");
	}

	if (ngroups)

M libbb/bbunit.c => libbb/bbunit.c +1 -1
@@ 60,6 60,6 @@ int unit_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
		return EXIT_FAILURE;
	}

	bb_error_msg("All tests passed");
	bb_simple_error_msg("All tests passed");
	return EXIT_SUCCESS;
}

M libbb/capability.c => libbb/capability.c +1 -1
@@ 119,7 119,7 @@ void FAST_FUNC getcaps(void *arg)
			caps->u32s = _LINUX_CAPABILITY_U32S_3;
			break;
		default:
			bb_error_msg_and_die("unsupported capability version");
			bb_simple_error_msg_and_die("unsupported capability version");
	}

	if (capget(&caps->header, caps->data) != 0)

M libbb/change_identity.c => libbb/change_identity.c +1 -1
@@ 51,7 51,7 @@ void FAST_FUNC change_identity(const struct passwd *pw)
			return;
		}

		bb_perror_msg_and_die("can't set groups");
		bb_simple_perror_msg_and_die("can't set groups");
	}

	xsetgid(pw->pw_gid);

M libbb/copy_file.c => libbb/copy_file.c +1 -1
@@ 327,7 327,7 @@ int FAST_FUNC copy_file(const char *source, const char *dest, int flags)
		) {
			security_context_t con;
			if (getfscreatecon(&con) == -1) {
				bb_perror_msg("getfscreatecon");
				bb_simple_perror_msg("getfscreatecon");
				return -1;
			}
			if (con) {

M libbb/copyfd.c => libbb/copyfd.c +3 -3
@@ 87,7 87,7 @@ static off_t bb_full_fd_action(int src_fd, int dst_fd, off_t size)
		rd = safe_read(src_fd, buffer,
			size > buffer_size ? buffer_size : size);
		if (rd < 0) {
			bb_perror_msg(bb_msg_read_error);
			bb_simple_perror_msg(bb_msg_read_error);
			break;
		}
 read_ok:


@@ 100,7 100,7 @@ static off_t bb_full_fd_action(int src_fd, int dst_fd, off_t size)
			ssize_t wr = full_write(dst_fd, buffer, rd);
			if (wr < rd) {
				if (!continue_on_write_error) {
					bb_perror_msg(bb_msg_write_error);
					bb_simple_perror_msg(bb_msg_write_error);
					break;
				}
				dst_fd = -1;


@@ 151,7 151,7 @@ void FAST_FUNC bb_copyfd_exact_size(int fd1, int fd2, off_t size)
	if (sz == (size >= 0 ? size : -size))
		return;
	if (sz != -1)
		bb_error_msg_and_die("short read");
		bb_simple_error_msg_and_die("short read");
	/* if sz == -1, bb_copyfd_XX already complained */
	xfunc_die();
}

M libbb/die_if_bad_username.c => libbb/die_if_bad_username.c +1 -1
@@ 57,5 57,5 @@ void FAST_FUNC die_if_bad_username(const char *name)
	 * including the terminating null byte.
	 */
	if (name - start >= LOGIN_NAME_MAX)
		bb_error_msg_and_die("name is too long");
		bb_simple_error_msg_and_die("name is too long");
}

M libbb/dump.c => libbb/dump.c +2 -2
@@ 199,7 199,7 @@ static NOINLINE void rewrite(priv_dumper_t *dumper, FS *fs)
				pr->bcnt = fu->bcnt;
				if (fu->bcnt == 0) {
					if (!prec)
						bb_error_msg_and_die("%%s needs precision or byte count");
						bb_simple_error_msg_and_die("%%s needs precision or byte count");
					pr->bcnt = atoi(prec);
				}
			} else


@@ 266,7 266,7 @@ static NOINLINE void rewrite(priv_dumper_t *dumper, FS *fs)

			/* only one conversion character if byte count */
			if (!(pr->flags & F_ADDRESS) && fu->bcnt && nconv++) {
				bb_error_msg_and_die("byte count with multiple conversion characters");
				bb_simple_error_msg_and_die("byte count with multiple conversion characters");
			}
		}
		/*

M libbb/fflush_stdout_and_exit.c => libbb/fflush_stdout_and_exit.c +1 -1
@@ 15,7 15,7 @@ void FAST_FUNC fflush_stdout_and_exit(int retval)
{
	xfunc_error_retval = retval;
	if (fflush(stdout))
		bb_perror_msg_and_die(bb_msg_standard_output);
		bb_simple_perror_msg_and_die(bb_msg_standard_output);
	/* In case we are in NOFORK applet. Do not exit() directly,
	 * but use xfunc_die() */
	xfunc_die();

M libbb/get_console.c => libbb/get_console.c +1 -1
@@ 62,7 62,7 @@ int FAST_FUNC get_console_fd_or_die(void)
		}
	}

	bb_error_msg_and_die("can't open console");
	bb_simple_error_msg_and_die("can't open console");
}

/* From <linux/vt.h> */

M libbb/get_volsize.c => libbb/get_volsize.c +2 -2
@@ 18,7 18,7 @@ uoff_t FAST_FUNC get_volume_size_in_bytes(int fd,
	if (override) {
		result = XATOOFF(override);
		if (result >= (uoff_t)(MAXINT(off_t)) / override_units)
			bb_error_msg_and_die("image size is too big");
			bb_simple_error_msg_and_die("image size is too big");
		result *= override_units;
		/* seek past end fails on block devices but works on files */
		if (lseek(fd, result - 1, SEEK_SET) != (off_t)-1) {


@@ 42,7 42,7 @@ uoff_t FAST_FUNC get_volume_size_in_bytes(int fd,
	 *
	 * Picked 16k arbitrarily: */
	if (result < 16*1024)
		bb_error_msg_and_die("image is too small");
		bb_simple_error_msg_and_die("image is too small");

	return result;
}

M libbb/getpty.c => libbb/getpty.c +3 -3
@@ 23,14 23,14 @@ int FAST_FUNC xgetpty(char *line)
			const char *name;
			name = ptsname(p); /* find out the name of slave pty */
			if (!name) {
				bb_perror_msg_and_die("ptsname error (is /dev/pts mounted?)");
				bb_simple_perror_msg_and_die("ptsname error (is /dev/pts mounted?)");
			}
			safe_strncpy(line, name, GETPTY_BUFSIZE);
		}
# else
		/* find out the name of slave pty */
		if (ptsname_r(p, line, GETPTY_BUFSIZE-1) != 0) {
			bb_perror_msg_and_die("ptsname error (is /dev/pts mounted?)");
			bb_simple_perror_msg_and_die("ptsname error (is /dev/pts mounted?)");
		}
		line[GETPTY_BUFSIZE-1] = '\0';
# endif


@@ 61,5 61,5 @@ int FAST_FUNC xgetpty(char *line)
		}
	}
#endif /* FEATURE_DEVPTS */
	bb_error_msg_and_die("can't find free pty");
	bb_simple_error_msg_and_die("can't find free pty");
}

M libbb/herror_msg.c => libbb/herror_msg.c +10 -0
@@ 26,3 26,13 @@ void FAST_FUNC bb_herror_msg_and_die(const char *s, ...)
	va_end(p);
	xfunc_die();
}

void FAST_FUNC bb_simple_herror_msg(const char *s)
{
	bb_herror_msg("%s", s);
}

void FAST_FUNC bb_simple_herror_msg_and_die(const char *s)
{
	bb_herror_msg_and_die("%s", s);
}

M libbb/mtab.c => libbb/mtab.c +2 -2
@@ 21,7 21,7 @@ void FAST_FUNC erase_mtab(const char *name)
	/* Bummer. Fall back on trying the /proc filesystem */
	if (!mountTable) mountTable = setmntent("/proc/mounts", "r");
	if (!mountTable) {
		bb_perror_msg(bb_path_mtab_file);
		bb_simple_perror_msg(bb_path_mtab_file);
		return;
	}



@@ 49,6 49,6 @@ void FAST_FUNC erase_mtab(const char *name)
		}
		endmntent(mountTable);
	} else if (errno != EROFS)
		bb_perror_msg(bb_path_mtab_file);
		bb_simple_perror_msg(bb_path_mtab_file);
}
#endif

M libbb/perror_nomsg.c => libbb/perror_nomsg.c +2 -2
@@ 12,11 12,11 @@
 * instead of including libbb.h */
//#include "libbb.h"
#include "platform.h"
extern void bb_perror_msg(const char *s, ...) FAST_FUNC;
extern void bb_simple_perror_msg(const char *s) FAST_FUNC;

/* suppress gcc "no previous prototype" warning */
void FAST_FUNC bb_perror_nomsg(void);
void FAST_FUNC bb_perror_nomsg(void)
{
	bb_perror_msg(0);
	bb_simple_perror_msg(0);
}

M libbb/perror_nomsg_and_die.c => libbb/perror_nomsg_and_die.c +2 -2
@@ 12,11 12,11 @@
 * instead of including libbb.h */
//#include "libbb.h"
#include "platform.h"
extern void bb_perror_msg_and_die(const char *s, ...) FAST_FUNC;
extern void bb_simple_perror_msg_and_die(const char *s) FAST_FUNC;

/* suppress gcc "no previous prototype" warning */
void FAST_FUNC bb_perror_nomsg_and_die(void);
void FAST_FUNC bb_perror_nomsg_and_die(void)
{
	bb_perror_msg_and_die(0);
	bb_simple_perror_msg_and_die(0);
}

M libbb/pw_encrypt.c => libbb/pw_encrypt.c +2 -0
@@ 6,7 6,9 @@
 *
 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
 */
#if !ENABLE_USE_BB_CRYPT
#include <crypt.h>
#endif
#include "libbb.h"

/* static const uint8_t ascii64[] ALIGN1 =

M libbb/read_printf.c => libbb/read_printf.c +1 -1
@@ 217,7 217,7 @@ void FAST_FUNC xread(int fd, void *buf, size_t count)
	if (count) {
		ssize_t size = full_read(fd, buf, count);
		if ((size_t)size != count)
			bb_error_msg_and_die("short read");
			bb_simple_error_msg_and_die("short read");
	}
}


M libbb/safe_poll.c => libbb/safe_poll.c +1 -1
@@ 27,7 27,7 @@ int FAST_FUNC safe_poll(struct pollfd *ufds, nfds_t nfds, int timeout)
		/* I doubt many callers would handle this correctly! */
		if (errno == ENOMEM)
			continue;
		bb_perror_msg("poll");
		bb_simple_perror_msg("poll");
		return n;
	}
}

M libbb/selinux_common.c => libbb/selinux_common.c +1 -1
@@ 48,7 48,7 @@ void FAST_FUNC selinux_preserve_fcontext(int fdesc)
	if (fgetfilecon(fdesc, &context) < 0) {
		if (errno == ENODATA || errno == ENOTSUP)
			return;
		bb_perror_msg_and_die("fgetfilecon failed");
		bb_simple_perror_msg_and_die("fgetfilecon failed");
	}
	setfscreatecon_or_die(context);
	freecon(context);

M libbb/time.c => libbb/time.c +1 -1
@@ 258,7 258,7 @@ char* FAST_FUNC strftime_YYYYMMDDHHMMSS(char *buf, unsigned len, time_t *tp)
static void get_mono(struct timespec *ts)
{
	if (syscall(__NR_clock_gettime, CLOCK_MONOTONIC, ts))
		bb_error_msg_and_die("clock_gettime(MONOTONIC) failed");
		bb_simple_error_msg_and_die("clock_gettime(MONOTONIC) failed");
}
unsigned long long FAST_FUNC monotonic_ns(void)
{

M libbb/unicode.c => libbb/unicode.c +6 -0
@@ 674,14 674,20 @@ int FAST_FUNC wcwidth(unsigned ucs)
		(  (/*ucs >= 0x1100 &&*/ ucs <= 0x115f) /* Hangul Jamo init. consonants */
		|| ucs == 0x2329 /* left-pointing angle bracket; also CJK punct. char */
		|| ucs == 0x232a /* right-pointing angle bracket; also CJK punct. char */
#   if CONFIG_LAST_SUPPORTED_WCHAR >= 0x2e80
		|| (ucs >= 0x2e80 && ucs <= 0xa4cf && ucs != 0x303f) /* CJK ... Yi */
#   endif
#   if CONFIG_LAST_SUPPORTED_WCHAR >= 0xac00
		|| (ucs >= 0xac00 && ucs <= 0xd7a3) /* Hangul Syllables */
#   endif
#   if CONFIG_LAST_SUPPORTED_WCHAR >= 0xf900
		|| (ucs >= 0xf900 && ucs <= 0xfaff) /* CJK Compatibility Ideographs */
		|| (ucs >= 0xfe10 && ucs <= 0xfe19) /* Vertical forms */
		|| (ucs >= 0xfe30 && ucs <= 0xfe6f) /* CJK Compatibility Forms */
		|| (ucs >= 0xff00 && ucs <= 0xff60) /* Fullwidth Forms */
		|| (ucs >= 0xffe0 && ucs <= 0xffe6)
#   endif
#   if CONFIG_LAST_SUPPORTED_WCHAR >= 0x20000
		|| ((ucs >> 17) == (2 >> 1)) /* 20000..3ffff: Supplementary and Tertiary Ideographic Planes */
#   endif
		);

M libbb/update_passwd.c => libbb/update_passwd.c +2 -2
@@ 25,7 25,7 @@ static void check_selinux_update_passwd(const char *username)
		return;  /* No need to check */

	if (getprevcon_raw(&context) < 0)
		bb_perror_msg_and_die("getprevcon failed");
		bb_simple_perror_msg_and_die("getprevcon failed");
	seuser = strtok(context, ":");
	if (!seuser)
		bb_error_msg_and_die("invalid context '%s'", context);


@@ 42,7 42,7 @@ static void check_selinux_update_passwd(const char *username)

		if (selinux_check_passwd_access(av) != 0)
 die:
			bb_error_msg_and_die("SELinux: access denied");
			bb_simple_error_msg_and_die("SELinux: access denied");
	}
	if (ENABLE_FEATURE_CLEAN_UP)
		freecon(context);

M libbb/uuencode.c => libbb/uuencode.c +1 -1
@@ 213,7 213,7 @@ void FAST_FUNC read_base64(FILE *src_stream, FILE *dst_stream, int flags)
			if (*in_tail == '\0')
				return;
			/* No */
			bb_error_msg_and_die("truncated base64 input");
			bb_simple_error_msg_and_die("truncated base64 input");
		}

		/* It was partial decode */

M libbb/verror_msg.c => libbb/verror_msg.c +15 -0
@@ 197,4 197,19 @@ void FAST_FUNC bb_info_msg(const char *s, ...)
	bb_vinfo_msg(s, p);
	va_end(p);
}

void FAST_FUNC bb_simple_info_msg(const char *s)
{
	bb_info_msg("%s", s);
}
#endif

void FAST_FUNC bb_simple_error_msg(const char *s)
{
	bb_error_msg("%s", s);
}

void FAST_FUNC bb_simple_error_msg_and_die(const char *s)
{
	bb_error_msg_and_die("%s", s);
}

M libbb/warn_ignoring_args.c => libbb/warn_ignoring_args.c +1 -1
@@ 12,7 12,7 @@
void FAST_FUNC bb_warn_ignoring_args(char *arg)
{
	if (arg) {
		bb_error_msg("ignoring all arguments");
		bb_simple_error_msg("ignoring all arguments");
	}
}
#endif

M libbb/xconnect.c => libbb/xconnect.c +2 -2
@@ 66,7 66,7 @@ int FAST_FUNC setsockopt_bindtodevice(int fd, const char *iface)
int FAST_FUNC setsockopt_bindtodevice(int fd UNUSED_PARAM,
		const char *iface UNUSED_PARAM)
{
	bb_error_msg("SO_BINDTODEVICE is not supported on this system");
	bb_simple_error_msg("SO_BINDTODEVICE is not supported on this system");
	return -1;
}
#endif


@@ 109,7 109,7 @@ void FAST_FUNC xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen)
			bb_perror_msg_and_die("%s (%s)",
				"can't connect to remote host",
				inet_ntoa(((struct sockaddr_in *)s_addr)->sin_addr));
		bb_perror_msg_and_die("can't connect to remote host");
		bb_simple_perror_msg_and_die("can't connect to remote host");
	}
}


M libbb/xfuncs.c => libbb/xfuncs.c +1 -1
@@ 426,6 426,6 @@ int FAST_FUNC wait_for_exitstatus(pid_t pid)

	n = safe_waitpid(pid, &exit_status, 0);
	if (n < 0)
		bb_perror_msg_and_die("waitpid");
		bb_simple_perror_msg_and_die("waitpid");
	return exit_status;
}

M libbb/xfuncs_printf.c => libbb/xfuncs_printf.c +21 -23
@@ 27,7 27,7 @@

void FAST_FUNC bb_die_memory_exhausted(void)
{
	bb_error_msg_and_die(bb_msg_memory_exhausted);
	bb_simple_error_msg_and_die(bb_msg_memory_exhausted);
}

#ifndef DMALLOC


@@ 40,7 40,7 @@ void* FAST_FUNC malloc_or_warn(size_t size)
{
	void *ptr = malloc(size);
	if (ptr == NULL && size != 0)
		bb_error_msg(bb_msg_memory_exhausted);
		bb_simple_error_msg(bb_msg_memory_exhausted);
	return ptr;
}



@@ 97,7 97,7 @@ char* FAST_FUNC xstrndup(const char *s, int n)
	char *t;

	if (ENABLE_DEBUG && s == NULL)
		bb_error_msg_and_die("xstrndup bug");
		bb_simple_error_msg_and_die("xstrndup bug");

	/* We can just xmalloc(n+1) and strncpy into it, */
	/* but think about xstrndup("abc", 10000) wastage! */


@@ 215,13 215,13 @@ int FAST_FUNC rename_or_warn(const char *oldpath, const char *newpath)
void FAST_FUNC xpipe(int filedes[2])
{
	if (pipe(filedes))
		bb_perror_msg_and_die("can't create pipe");
		bb_simple_perror_msg_and_die("can't create pipe");
}

void FAST_FUNC xdup2(int from, int to)
{
	if (dup2(from, to) != to)
		bb_perror_msg_and_die("can't duplicate file descriptor");
		bb_simple_perror_msg_and_die("can't duplicate file descriptor");
		//		" %d to %d", from, to);
}



@@ 245,7 245,7 @@ void FAST_FUNC xwrite(int fd, const void *buf, size_t count)
			 * or some writes succeeded, then we hit an error.
			 * In either case, errno is set.
			 */
			bb_perror_msg_and_die(
			bb_simple_perror_msg_and_die(
				size >= 0 ? "short write" : "write error"
			);
		}


@@ 259,7 259,7 @@ void FAST_FUNC xwrite_str(int fd, const char *str)
void FAST_FUNC xclose(int fd)
{
	if (close(fd))
		bb_perror_msg_and_die("close failed");
		bb_simple_perror_msg_and_die("close failed");
}

// Die with an error message if we can't lseek to the right spot.


@@ 267,9 267,7 @@ off_t FAST_FUNC xlseek(int fd, off_t offset, int whence)
{
	off_t off = lseek(fd, offset, whence);
	if (off == (off_t)-1) {
		if (whence == SEEK_SET)
			bb_perror_msg_and_die("lseek(%"OFF_FMT"u)", offset);
		bb_perror_msg_and_die("lseek");
		bb_perror_msg_and_die("lseek(%"OFF_FMT"u, %d)", offset, whence);
	}
	return off;
}


@@ 384,23 382,23 @@ void FAST_FUNC bb_unsetenv_and_free(char *var)
// setgid() will fail and we'll _still_be_root_, which is bad.)
void FAST_FUNC xsetgid(gid_t gid)
{
	if (setgid(gid)) bb_perror_msg_and_die("setgid");
	if (setgid(gid)) bb_simple_perror_msg_and_die("setgid");
}

// Die with an error message if we can't set uid.  (See xsetgid() for why.)
void FAST_FUNC xsetuid(uid_t uid)
{
	if (setuid(uid)) bb_perror_msg_and_die("setuid");
	if (setuid(uid)) bb_simple_perror_msg_and_die("setuid");
}

void FAST_FUNC xsetegid(gid_t egid)
{
	if (setegid(egid)) bb_perror_msg_and_die("setegid");
	if (setegid(egid)) bb_simple_perror_msg_and_die("setegid");
}

void FAST_FUNC xseteuid(uid_t euid)
{
	if (seteuid(euid)) bb_perror_msg_and_die("seteuid");
	if (seteuid(euid)) bb_simple_perror_msg_and_die("seteuid");
}

// Die if we can't chdir to a new path.


@@ 413,7 411,7 @@ void FAST_FUNC xchdir(const char *path)
void FAST_FUNC xfchdir(int fd)
{
	if (fchdir(fd))
		bb_perror_msg_and_die("fchdir");
		bb_simple_perror_msg_and_die("fchdir");
}

void FAST_FUNC xchroot(const char *path)


@@ 463,7 461,7 @@ int FAST_FUNC xsocket(int domain, int type, int protocol)
IF_FEATURE_IPV6(if (domain == AF_INET6) s = "INET6";)
		bb_perror_msg_and_die("socket(AF_%s,%d,%d)", s, type, protocol);
#else
		bb_perror_msg_and_die("socket");
		bb_simple_perror_msg_and_die("socket");
#endif
	}



@@ 473,13 471,13 @@ IF_FEATURE_IPV6(if (domain == AF_INET6) s = "INET6";)
// Die with an error message if we can't bind a socket to an address.
void FAST_FUNC xbind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen)
{
	if (bind(sockfd, my_addr, addrlen)) bb_perror_msg_and_die("bind");
	if (bind(sockfd, my_addr, addrlen)) bb_simple_perror_msg_and_die("bind");
}

// Die with an error message if we can't listen for connections on a socket.
void FAST_FUNC xlisten(int s, int backlog)
{
	if (listen(s, backlog)) bb_perror_msg_and_die("listen");
	if (listen(s, backlog)) bb_simple_perror_msg_and_die("listen");
}

/* Die with an error message if sendto failed.


@@ 491,7 489,7 @@ ssize_t FAST_FUNC xsendto(int s, const void *buf, size_t len, const struct socka
	if (ret < 0) {
		if (ENABLE_FEATURE_CLEAN_UP)
			close(s);
		bb_perror_msg_and_die("sendto");
		bb_simple_perror_msg_and_die("sendto");
	}
	return ret;
}


@@ 519,12 517,12 @@ void FAST_FUNC selinux_or_die(void)
#if ENABLE_SELINUX
	int rc = is_selinux_enabled();
	if (rc == 0) {
		bb_error_msg_and_die("SELinux is disabled");
		bb_simple_error_msg_and_die("SELinux is disabled");
	} else if (rc < 0) {
		bb_error_msg_and_die("is_selinux_enabled() failed");
		bb_simple_error_msg_and_die("is_selinux_enabled() failed");
	}
#else
	bb_error_msg_and_die("SELinux support is disabled");
	bb_simple_error_msg_and_die("SELinux support is disabled");
#endif
}



@@ 675,7 673,7 @@ pid_t FAST_FUNC xfork(void)
	pid_t pid;
	pid = fork();
	if (pid < 0) /* wtf? */
		bb_perror_msg_and_die("vfork"+1);
		bb_simple_perror_msg_and_die("vfork"+1);
	return pid;
}
#endif

M libbb/xgetcwd.c => libbb/xgetcwd.c +1 -1
@@ 33,7 33,7 @@ xrealloc_getcwd_or_warn(char *cwd)
			if (errno == ERANGE)
				continue;
			free(cwd);
			bb_perror_msg("getcwd");
			bb_simple_perror_msg("getcwd");
			return NULL;
		}
		cwd = xrealloc(cwd, strlen(cwd) + 1);

M libbb/xgethostbyname.c => libbb/xgethostbyname.c +1 -1
@@ 12,6 12,6 @@ struct hostent* FAST_FUNC xgethostbyname(const char *name)
{
	struct hostent *retval = gethostbyname(name);
	if (!retval)
		bb_herror_msg_and_die("%s", name);
		bb_simple_herror_msg_and_die(name);
	return retval;
}

M loginutils/addgroup.c => loginutils/addgroup.c +1 -1
@@ 149,7 149,7 @@ int addgroup_main(int argc UNUSED_PARAM, char **argv)

	/* need to be root */
	if (geteuid()) {
		bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
		bb_simple_error_msg_and_die(bb_msg_perm_denied_are_you_root);
	}
	/* Syntax:
	 *  addgroup group

M loginutils/adduser.c => loginutils/adduser.c +2 -2
@@ 159,7 159,7 @@ static void passwd_wrapper(const char *login_name) NORETURN;
static void passwd_wrapper(const char *login_name)
{
	BB_EXECLP("passwd", "passwd", "--", login_name, NULL);
	bb_error_msg_and_die("can't execute passwd, you must set password manually");
	bb_simple_error_msg_and_die("can't execute passwd, you must set password manually");
}

//FIXME: upstream adduser has no short options! NOT COMPATIBLE!


@@ 193,7 193,7 @@ int adduser_main(int argc UNUSED_PARAM, char **argv)

	/* got root? */
	if (geteuid()) {
		bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
		bb_simple_error_msg_and_die(bb_msg_perm_denied_are_you_root);
	}

	pw.pw_gecos = (char *)"Linux User,,,";

M loginutils/chpasswd.c => loginutils/chpasswd.c +2 -2
@@ 63,7 63,7 @@ int chpasswd_main(int argc UNUSED_PARAM, char **argv)
	int opt;

	if (getuid() != 0)
		bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
		bb_simple_error_msg_and_die(bb_msg_perm_denied_are_you_root);

	opt = getopt32long(argv, "^" "emc:R:" "\0" "m--ec:e--mc:c--em",
			chpasswd_longopts,


@@ 81,7 81,7 @@ int chpasswd_main(int argc UNUSED_PARAM, char **argv)

		pass = strchr(name, ':');
		if (!pass)
			bb_error_msg_and_die("missing new password");
			bb_simple_error_msg_and_die("missing new password");
		*pass++ = '\0';

		xuname2uid(name); /* dies if there is no such user */

M loginutils/deluser.c => loginutils/deluser.c +1 -1
@@ 76,7 76,7 @@ int deluser_main(int argc, char **argv)
#endif

	if (geteuid() != 0)
		bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
		bb_simple_error_msg_and_die(bb_msg_perm_denied_are_you_root);

	name = argv[1];
	member = NULL;

M loginutils/getty.c => loginutils/getty.c +8 -8
@@ 168,7 168,7 @@ static void parse_speeds(char *arg)
		/* note: arg "0" turns into speed B0 */
		G.numspeed++;
		if (G.numspeed > MAX_SPEED)
			bb_error_msg_and_die("too many alternate speeds");
			bb_simple_error_msg_and_die("too many alternate speeds");
	}
	debug("exiting parse_speeds\n");
}


@@ 230,7 230,7 @@ static void open_tty(void)
		 * Make sure it is open for read/write.
		 */
		if ((fcntl(0, F_GETFL) & (O_RDWR|O_RDONLY|O_WRONLY)) != O_RDWR)
			bb_error_msg_and_die("stdin is not open for read/write");
			bb_simple_error_msg_and_die("stdin is not open for read/write");

		/* Try to get real tty name instead of "-" */
		n = xmalloc_ttyname(0);


@@ 243,7 243,7 @@ static void open_tty(void)
static void set_tty_attrs(void)
{
	if (tcsetattr_stdin_TCSANOW(&G.tty_attrs) < 0)
		bb_perror_msg_and_die("tcsetattr");
		bb_simple_perror_msg_and_die("tcsetattr");
}

/* We manipulate tty_attrs this way:


@@ 485,7 485,7 @@ static char *get_logname(void)
				finalize_tty_attrs();
				if (errno == EINTR || errno == EIO)
					exit(EXIT_SUCCESS);
				bb_perror_msg_and_die(bb_msg_read_error);
				bb_simple_perror_msg_and_die(bb_msg_read_error);
			}

			switch (c) {


@@ 582,7 582,7 @@ int getty_main(int argc UNUSED_PARAM, char **argv)
			//	" sid %d pgid %d",
			//	pid, getppid(),
			//	getsid(0), getpgid(0));
			bb_perror_msg_and_die("setsid");
			bb_simple_perror_msg_and_die("setsid");
			/*
			 * When we can end up here?
			 * Example: setsid() fails when run alone in interactive shell:


@@ 651,13 651,13 @@ int getty_main(int argc UNUSED_PARAM, char **argv)
	tsid = tcgetsid(STDIN_FILENO);
	if (tsid < 0 || pid != tsid) {
		if (ioctl(STDIN_FILENO, TIOCSCTTY, /*force:*/ (long)1) < 0)
			bb_perror_msg_and_die("TIOCSCTTY");
			bb_simple_perror_msg_and_die("TIOCSCTTY");
	}

#ifdef __linux__
	/* Make ourself a foreground process group within our session */
	if (tcsetpgrp(STDIN_FILENO, pid) < 0)
		bb_perror_msg_and_die("tcsetpgrp");
		bb_simple_perror_msg_and_die("tcsetpgrp");
#endif

	/*


@@ 669,7 669,7 @@ int getty_main(int argc UNUSED_PARAM, char **argv)
	 * 5 seconds seems to be a good value.
	 */
	if (tcgetattr(STDIN_FILENO, &G.tty_attrs) < 0)
		bb_perror_msg_and_die("tcgetattr");
		bb_simple_perror_msg_and_die("tcgetattr");

	/* Update the utmp file. This tty is ours now! */
	update_utmp(pid, LOGIN_PROCESS, G.tty_name, "LOGIN", G.fakehost);

M loginutils/login.c => loginutils/login.c +2 -2
@@ 358,7 358,7 @@ int login_main(int argc UNUSED_PARAM, char **argv)
	opt = getopt32(argv, "f:h:p", &opt_user, &opt_host);
	if (opt & LOGIN_OPT_f) {
		if (!run_by_root)
			bb_error_msg_and_die("-f is for root only");
			bb_simple_error_msg_and_die("-f is for root only");
		safe_strncpy(username, opt_user, sizeof(username));
	}
	argv += optind;


@@ 529,7 529,7 @@ int login_main(int argc UNUSED_PARAM, char **argv)
	child_pid = vfork();
	if (child_pid != 0) {
		if (child_pid < 0)
			bb_perror_msg("vfork");
			bb_simple_perror_msg("vfork");
		else {
			wait_for_exitstatus(child_pid);
			update_utmp_DEAD_PROCESS(child_pid);

M loginutils/su.c => loginutils/su.c +2 -2
@@ 147,7 147,7 @@ int su_main(int argc UNUSED_PARAM, char **argv)
			syslog(LOG_NOTICE, "%c %s %s:%s",
				'-', tty, old_user, opt_username);
		bb_do_delay(LOGIN_FAIL_DELAY);
		bb_error_msg_and_die("incorrect password");
		bb_simple_error_msg_and_die("incorrect password");
	}

	if (ENABLE_FEATURE_CLEAN_UP && ENABLE_FEATURE_SU_SYSLOG) {


@@ 165,7 165,7 @@ int su_main(int argc UNUSED_PARAM, char **argv)
		 * probably a uucp account or has restricted access.  Don't
		 * compromise the account by allowing access with a standard
		 * shell.  */
		bb_error_msg("using restricted shell");
		bb_simple_error_msg("using restricted shell");
		opt_shell = NULL; /* ignore -s PROG */
	}
	/* else: user can run whatever he wants via "su -s PROG USER".

M loginutils/sulogin.c => loginutils/sulogin.c +4 -4
@@ 56,7 56,7 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv)

	pwd = getpwuid(0);
	if (!pwd) {
		bb_error_msg_and_die("no password entry for root");
		bb_simple_error_msg_and_die("no password entry for root");
	}

	while (1) {


@@ 68,17 68,17 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv)
		);
		if (r < 0) {
			/* ^D, ^C, timeout, or read error */
			bb_info_msg("normal startup");
			bb_simple_info_msg("normal startup");
			return 0;
		}
		if (r > 0) {
			break;
		}
		bb_do_delay(LOGIN_FAIL_DELAY);
		bb_info_msg("Login incorrect");
		bb_simple_info_msg("Login incorrect");
	}

	bb_info_msg("starting shell for system maintenance");
	bb_simple_info_msg("starting shell for system maintenance");

	IF_SELINUX(renew_current_security_context());


M mailutils/mail.c => mailutils/mail.c +3 -3
@@ 15,7 15,7 @@ static void signal_handler(int signo)
{
#define err signo
	if (SIGALRM == signo) {
		bb_error_msg_and_die("timed out");
		bb_simple_error_msg_and_die("timed out");
	}

	// SIGCHLD. reap zombies


@@ 128,7 128,7 @@ static void encode_n_base64(const char *fname, const char *text, size_t len)
		if (fname) {
			size = fread((char *)src_buf, 1, SRC_BUF_SIZE, fp);
			if ((ssize_t)size < 0)
				bb_perror_msg_and_die(bb_msg_read_error);
				bb_simple_perror_msg_and_die(bb_msg_read_error);
		} else {
			size = len;
			if (len > SRC_BUF_SIZE)


@@ 179,5 179,5 @@ void FAST_FUNC get_cred_or_die(int fd)
		G.pass = xmalloc_reads(fd, /* maxsize: */ NULL);
	}
	if (!G.user || !*G.user || !G.pass)
		bb_error_msg_and_die("no username or password");
		bb_simple_error_msg_and_die("no username or password");
}

M mailutils/popmaildir.c => mailutils/popmaildir.c +1 -1
@@ 222,7 222,7 @@ int popmaildir_main(int argc UNUSED_PARAM, char **argv)
			fp = popen(delivery, "w");
			unsetenv("FILENAME");
			if (!fp) {
				bb_perror_msg("delivery helper");
				bb_simple_perror_msg("delivery helper");
				break;
			}
		} else

M mailutils/sendmail.c => mailutils/sendmail.c +1 -1
@@ 338,7 338,7 @@ int sendmail_main(int argc UNUSED_PARAM, char **argv)
			smtp_check(NULL, 250);
		else
		if (code != 250)
			bb_error_msg_and_die("SMTP init failed");
			bb_simple_error_msg_and_die("SMTP init failed");
	} else {
		// vanilla connection
		int fd;

M miscutils/bc.c => miscutils/bc.c +6 -6
@@ 893,7 893,7 @@ static void fflush_and_check(void)
{
	fflush_all();
	if (ferror(stdout) || ferror(stderr))
		bb_perror_msg_and_die("output error");
		bb_simple_perror_msg_and_die("output error");
}

#if ENABLE_FEATURE_CLEAN_UP


@@ 908,7 908,7 @@ static void quit(void) NORETURN;
static void quit(void)
{
	if (ferror(stdin))
		bb_perror_msg_and_die("input error");
		bb_simple_perror_msg_and_die("input error");
	fflush_and_check();
	dbg_exec("quit(): exiting with exitcode SUCCESS");
	exit(0);


@@ 2576,7 2576,7 @@ static void xc_read_line(BcVec *vec, FILE *fp)
				goto get_char;
			if (c == EOF) {
				if (ferror(fp))
					bb_perror_msg_and_die("input error");
					bb_simple_perror_msg_and_die("input error");
				// Note: EOF does not append '\n'
				break;
			}


@@ 6925,9 6925,9 @@ static BC_STATUS zxc_vm_process(const char *text)
		ip = (void*)G.prog.exestack.v;
#if SANITY_CHECKS
		if (G.prog.exestack.len != 1) // should have only main's IP
			bb_error_msg_and_die("BUG:call stack");
			bb_simple_error_msg_and_die("BUG:call stack");
		if (ip->func != BC_PROG_MAIN)
			bb_error_msg_and_die("BUG:not MAIN");
			bb_simple_error_msg_and_die("BUG:not MAIN");
#endif
		f = xc_program_func_BC_PROG_MAIN();
		// bc discards strings, constants and code after each


@@ 6943,7 6943,7 @@ static BC_STATUS zxc_vm_process(const char *text)
		if (IS_BC) {
#if SANITY_CHECKS
			if (G.prog.results.len != 0) // should be empty
				bb_error_msg_and_die("BUG:data stack");
				bb_simple_error_msg_and_die("BUG:data stack");
#endif
			IF_BC(bc_vec_pop_all(&f->strs);)
			IF_BC(bc_vec_pop_all(&f->consts);)

M miscutils/chat.c => miscutils/chat.c +1 -1
@@ 307,7 307,7 @@ int chat_main(int argc UNUSED_PARAM, char **argv)
			} else if (DIR_SAY == key) {
				// just print argument verbatim
				// TODO: should we use full_write() to avoid unistd/stdio conflict?
				bb_error_msg("%s", arg);
				bb_simple_error_msg(arg);
			}
			// next, please!
			argv++;

M miscutils/crond.c => miscutils/crond.c +2 -2
@@ 731,7 731,7 @@ fork_job(const char *user, int mailFd, CronLine *line, bool run_sendmail)
	logmode = sv_logmode;

	if (pid < 0) {
		bb_perror_msg("vfork");
		bb_simple_perror_msg("vfork");
 err:
		pid = 0;
	} /* else: PARENT, FORK SUCCESS */


@@ 861,7 861,7 @@ static pid_t start_one_job(const char *user, CronLine *line)
		bb_error_msg_and_die("can't execute '%s' for user %s", shell, user);
	}
	if (pid < 0) {
		bb_perror_msg("vfork");
		bb_simple_perror_msg("vfork");
 err:
		pid = 0;
	}

M miscutils/crontab.c => miscutils/crontab.c +1 -1
@@ 107,7 107,7 @@ int crontab_main(int argc UNUSED_PARAM, char **argv)
	if (sanitize_env_if_suid()) { /* Clears dangerous stuff, sets PATH */
		/* Run by non-root */
		if (opt_ler & (OPT_u|OPT_c))
			bb_error_msg_and_die(bb_msg_you_must_be_root);
			bb_simple_error_msg_and_die(bb_msg_you_must_be_root);
	}

	if (opt_ler & OPT_u) {

M miscutils/dc.c => miscutils/dc.c +2 -2
@@ 39,14 39,14 @@ static unsigned check_under(void)
{
	unsigned p = pointer;
	if (p == 0)
		bb_error_msg_and_die("stack underflow");
		bb_simple_error_msg_and_die("stack underflow");
	return p - 1;
}

static void push(double a)
{
	if (pointer >= STACK_SIZE)
		bb_error_msg_and_die("stack overflow");
		bb_simple_error_msg_and_die("stack overflow");
	stack[pointer++] = a;
}


M miscutils/devfsd.c => miscutils/devfsd.c +10 -5
@@ 344,14 344,19 @@ static const char bb_msg_variable_not_found[] ALIGN1 = "variable: %s not found";
/* Busybox stuff */
#if ENABLE_DEVFSD_VERBOSE || ENABLE_DEBUG
#define info_logger(p, fmt, args...)                 bb_info_msg(fmt, ## args)
#define simple_info_logger(p, msg)                   bb_simple_info_msg(msg)
#define msg_logger(p, fmt, args...)                  bb_error_msg(fmt, ## args)
#define simple_msg_logger(p, msg)                    bb_simple_error_msg(msg)
#define msg_logger_and_die(p, fmt, args...)          bb_error_msg_and_die(fmt, ## args)
#define simple_msg_logger_and_die(p, msg)            bb_simple_error_msg_and_die(msg)
#define error_logger(p, fmt, args...)                bb_perror_msg(fmt, ## args)
#define error_logger_and_die(p, fmt, args...)        bb_perror_msg_and_die(fmt, ## args)
#else
#define info_logger(p, fmt, args...)
#define msg_logger(p, fmt, args...)
#define simple_msg_logger(p, msg)
#define msg_logger_and_die(p, fmt, args...)           exit(EXIT_FAILURE)
#define simple_msg_logger_and_die(p, msg)             exit(EXIT_FAILURE)
#define error_logger(p, fmt, args...)
#define error_logger_and_die(p, fmt, args...)         exit(EXIT_FAILURE)
#endif


@@ 727,7 732,7 @@ static int do_servicing(int fd, unsigned long event_mask)
		caught_sighup = FALSE;
		return c_sighup;
	}
	msg_logger_and_die(LOG_ERR, "read error on control file");
	simple_msg_logger_and_die(LOG_ERR, "read error on control file");
}   /*  End Function do_servicing  */

static void service_name(const struct devfsd_notify_struct *info)


@@ 786,7 791,7 @@ static void service_name(const struct devfsd_notify_struct *info)
				action_compat(info, entry->action.what);
				break;
			default:
				msg_logger_and_die(LOG_ERR, "Unknown action");
				simple_msg_logger_and_die(LOG_ERR, "Unknown action");
		}
	}
}   /*  End Function service_name  */


@@ 1691,7 1696,7 @@ int st_expr_expand(char *output, unsigned int length, const char *input,
	}
	return FALSE;
st_expr_expand_out:
	info_logger(LOG_INFO, bb_msg_small_buffer);
	simple_info_logger(LOG_INFO, bb_msg_small_buffer);
	return FALSE;
}   /*  End Function st_expr_expand  */



@@ 1775,7 1780,7 @@ static const char *expand_variable(char *buffer, unsigned int length,
		return input + len;
	}
	if (ch != ':' || ptr[1] != '-') {
		info_logger(LOG_INFO, "illegal char in var name");
		simple_info_logger(LOG_INFO, "illegal char in var name");
		return NULL;
	}
	/*  It's that handy "${var:-word}" expression. Check if var is defined  */


@@ 1838,7 1843,7 @@ static const char *expand_variable(char *buffer, unsigned int length,
	*out_pos += len;
	return input;
expand_variable_out:
	info_logger(LOG_INFO, bb_msg_small_buffer);
	simple_info_logger(LOG_INFO, bb_msg_small_buffer);
	return NULL;
}   /*  End Function expand_variable  */


M miscutils/devmem.c => miscutils/devmem.c +4 -4
@@ 89,7 89,7 @@ int devmem_main(int argc UNUSED_PARAM, char **argv)
			fd,
			target & ~(off_t)(page_size - 1));
	if (map_base == MAP_FAILED)
		bb_perror_msg_and_die("mmap");
		bb_simple_perror_msg_and_die("mmap");

//	printf("Memory mapped at address %p.\n", map_base);



@@ 110,7 110,7 @@ int devmem_main(int argc UNUSED_PARAM, char **argv)
			read_result = *(volatile uint64_t*)virt_addr;
			break;
		default:
			bb_error_msg_and_die("bad width");
			bb_simple_error_msg_and_die("bad width");
		}
//		printf("Value at address 0x%"OFF_FMT"X (%p): 0x%llX\n",
//			target, virt_addr,


@@ 136,7 136,7 @@ int devmem_main(int argc UNUSED_PARAM, char **argv)
//			read_result = *(volatile uint64_t*)virt_addr;
			break;
		default:
			bb_error_msg_and_die("bad width");
			bb_simple_error_msg_and_die("bad width");
		}
//		printf("Written 0x%llX; readback 0x%llX\n",
//				(unsigned long long)writeval,


@@ 145,7 145,7 @@ int devmem_main(int argc UNUSED_PARAM, char **argv)

	if (ENABLE_FEATURE_CLEAN_UP) {
		if (munmap(map_base, mapped_size) == -1)
			bb_perror_msg_and_die("munmap");
			bb_simple_perror_msg_and_die("munmap");
		close(fd);
	}


M miscutils/fbsplash.c => miscutils/fbsplash.c +1 -1
@@ 183,7 183,7 @@ static void fb_open(const char *strfb_device)
			(G.scr_var.yres_virtual ?: G.scr_var.yres) * G.scr_fix.line_length,
			PROT_WRITE, MAP_SHARED, fbfd, 0);
	if (G.addr == MAP_FAILED)
		bb_perror_msg_and_die("mmap");
		bb_simple_perror_msg_and_die("mmap");

	// point to the start of the visible screen
	G.addr += G.scr_var.yoffset * G.scr_fix.line_length + G.scr_var.xoffset * G.bytes_per_pixel;

M miscutils/flash_eraseall.c => miscutils/flash_eraseall.c +3 -3
@@ 120,7 120,7 @@ int flash_eraseall_main(int argc UNUSED_PARAM, char **argv)
				if (clmlen > 8)
					clmlen = 8;
				if (clmlen == 0)
					bb_error_msg_and_die("autoplacement selected and no empty space in oob");
					bb_simple_error_msg_and_die("autoplacement selected and no empty space in oob");
			} else {
				/* Legacy mode */
				switch (meminfo.oobsize) {


@@ 168,9 168,9 @@ int flash_eraseall_main(int argc UNUSED_PARAM, char **argv)
				if (errno == EOPNOTSUPP) {
					flags |= OPTION_N;
					if (flags & IS_NAND)
						bb_error_msg_and_die("bad block check not available");
						bb_simple_error_msg_and_die("bad block check not available");
				} else {
					bb_perror_msg_and_die("MEMGETBADBLOCK error");
					bb_simple_perror_msg_and_die("MEMGETBADBLOCK error");
				}
			}
		}

M miscutils/hdparm.c => miscutils/hdparm.c +6 -6
@@ 810,7 810,7 @@ static void identify(uint16_t *val)
		like_std = 3;
	} else
		/* "Unknown device type:\n\tbits 15&14 of general configuration word 0 both set to 1.\n" */
		bb_error_msg_and_die("unknown device type");
		bb_simple_error_msg_and_die("unknown device type");

	printf("%sremovable media\n", !(val[GEN_CONFIG] & MEDIA_REMOVABLE) ? "non-" : "");
	/* Info from the specific configuration word says whether or not the


@@ 1440,7 1440,7 @@ static void flush_buffer_cache(/*int fd*/ void)
	sleep(1);
	if (ioctl(fd, HDIO_DRIVE_CMD, NULL) && errno != EINVAL) {	/* await completion */
		if (ENABLE_IOCTL_HEX2STR_ERROR) /* To be coherent with ioctl_or_warn */
			bb_perror_msg("HDIO_DRIVE_CMD");
			bb_simple_perror_msg("HDIO_DRIVE_CMD");
		else
			bb_perror_msg("ioctl %#x failed", HDIO_DRIVE_CMD);
	}


@@ 1506,7 1506,7 @@ static void do_time(int cache /*,int fd*/)
	char *buf = xmalloc(TIMING_BUF_BYTES);

	if (mlock(buf, TIMING_BUF_BYTES))
		bb_perror_msg_and_die("mlock");
		bb_simple_perror_msg_and_die("mlock");

	/* Clear out the device request queues & give them time to complete.
	 * NB: *small* delay. User is expected to have a clue and to not run


@@ 1857,7 1857,7 @@ static void process_dev(char *devname)
		char buf[512];
		flush_buffer_cache();
		if (-1 == read(fd, buf, sizeof(buf)))
			bb_perror_msg("read of 512 bytes failed");
			bb_simple_perror_msg("read of 512 bytes failed");
	}
#endif  /* HDIO_DRIVE_CMD */
	if (getset_mult || get_identity) {


@@ 1865,7 1865,7 @@ static void process_dev(char *devname)
		if (ioctl(fd, HDIO_GET_MULTCOUNT, &multcount)) {
			/* To be coherent with ioctl_or_warn. */
			if (getset_mult && ENABLE_IOCTL_HEX2STR_ERROR)
				bb_perror_msg("HDIO_GET_MULTCOUNT");
				bb_simple_perror_msg("HDIO_GET_MULTCOUNT");
			else
				bb_perror_msg("ioctl %#x failed", HDIO_GET_MULTCOUNT);
		} else if (getset_mult) {


@@ 1985,7 1985,7 @@ static void process_dev(char *devname)
		} else if (errno == -ENOMSG)
			puts(" no identification info available");
		else if (ENABLE_IOCTL_HEX2STR_ERROR)  /* To be coherent with ioctl_or_warn */
			bb_perror_msg("HDIO_GET_IDENTITY");
			bb_simple_perror_msg("HDIO_GET_IDENTITY");
		else
			bb_perror_msg("ioctl %#x failed", HDIO_GET_IDENTITY);
	}

M miscutils/hexedit.c => miscutils/hexedit.c +1 -1
@@ 193,7 193,7 @@ static int remap(unsigned cur_pos)
	);
	if (G.baseaddr == MAP_FAILED) {
		restore_term();
		bb_perror_msg_and_die("mmap");
		bb_simple_perror_msg_and_die("mmap");
	}

	G.current_byte = G.baseaddr + cur_pos;

M miscutils/i2c_tools.c => miscutils/i2c_tools.c +22 -22
@@ 344,7 344,7 @@ static void get_funcs_matrix(int fd, unsigned long *funcs)
static void check_funcs_test_end(int funcs, int pec, const char *err)
{
	if (pec && !(funcs & (I2C_FUNC_SMBUS_PEC | I2C_FUNC_I2C)))
		bb_error_msg("warning: adapter does not support PEC");
		bb_simple_error_msg("warning: adapter does not support PEC");

	if (err)
		bb_error_msg_and_die(


@@ 392,7 392,7 @@ static void check_read_funcs(int fd, int mode, int data_addr, int pec)
		break;
#endif /* ENABLE_I2CDUMP */
	default:
		bb_error_msg_and_die("internal error");
		bb_simple_error_msg_and_die("internal error");
	}
	check_funcs_test_end(funcs, pec, err);
}


@@ 438,7 438,7 @@ static void confirm_or_abort(void)
{
	fprintf(stderr, "Continue? [y/N] ");
	if (!bb_ask_y_confirmation())
		bb_error_msg_and_die("aborting");
		bb_simple_error_msg_and_die("aborting");
}

/*


@@ 449,20 449,20 @@ static void confirm_or_abort(void)
 */
static void confirm_action(int bus_addr, int mode, int data_addr, int pec)
{
	bb_error_msg("WARNING! This program can confuse your I2C bus");
	bb_simple_error_msg("WARNING! This program can confuse your I2C bus");

	/* Don't let the user break his/her EEPROMs */
	if (bus_addr >= 0x50 && bus_addr <= 0x57 && pec) {
		bb_error_msg_and_die("this is I2C not smbus - using PEC on I2C "
		bb_simple_error_msg_and_die("this is I2C not smbus - using PEC on I2C "
			"devices may result in data loss, aborting");
	}

	if (mode == I2C_SMBUS_BYTE && data_addr >= 0 && pec)
		bb_error_msg("WARNING! May interpret a write byte command "
		bb_simple_error_msg("WARNING! May interpret a write byte command "
			"with PEC as a write byte data command");

	if (pec)
		bb_error_msg("PEC checking enabled");
		bb_simple_error_msg("PEC checking enabled");

	confirm_or_abort();
}


@@ 507,7 507,7 @@ int i2cget_main(int argc UNUSED_PARAM, char **argv)
			case 'w':	mode = I2C_SMBUS_WORD_DATA;	break;
			case 'c':	mode = I2C_SMBUS_BYTE;		break;
			default:
				bb_error_msg("invalid mode");
				bb_simple_error_msg("invalid mode");
				bb_show_usage();
			}
			pec = argv[3][1] == 'p';


@@ 529,7 529,7 @@ int i2cget_main(int argc UNUSED_PARAM, char **argv)
		if (data_addr >= 0) {
			status = i2c_smbus_write_byte(fd, data_addr);
			if (status < 0)
				bb_error_msg("warning - write failed");
				bb_simple_error_msg("warning - write failed");
		}
		status = i2c_smbus_read_byte(fd);
		break;


@@ 542,7 542,7 @@ int i2cget_main(int argc UNUSED_PARAM, char **argv)
	close(fd);

	if (status < 0)
		bb_perror_msg_and_die("read failed");
		bb_simple_perror_msg_and_die("read failed");

	printf("0x%0*x\n", mode == I2C_SMBUS_WORD_DATA ? 4 : 2, status);



@@ 611,7 611,7 @@ int i2cset_main(int argc, char **argv)
			case 'i': mode = I2C_SMBUS_I2C_BLOCK_DATA;
				break;
			default:
				bb_error_msg("invalid mode");
				bb_simple_error_msg("invalid mode");
				bb_show_usage();
			}



@@ 620,11 620,11 @@ int i2cset_main(int argc, char **argv)
			 || mode == I2C_SMBUS_I2C_BLOCK_DATA
			) {
				if (pec && mode == I2C_SMBUS_I2C_BLOCK_DATA)
					bb_error_msg_and_die(
					bb_simple_error_msg_and_die(
						"PEC not supported for I2C "
						"block writes");
				if (opts & opt_m)
					bb_error_msg_and_die(
					bb_simple_error_msg_and_die(
						"mask not supported for block "
						"writes");
			}


@@ 685,7 685,7 @@ int i2cset_main(int argc, char **argv)
		}

		if (tmpval < 0)
			bb_perror_msg_and_die("can't read old value");
			bb_simple_perror_msg_and_die("can't read old value");

		val = (val & mask) | (tmpval & ~mask);



@@ 724,7 724,7 @@ int i2cset_main(int argc, char **argv)
		break;
	}
	if (status < 0)
		bb_perror_msg_and_die("write failed");
		bb_simple_perror_msg_and_die("write failed");

	if (pec)
		i2c_set_pec(fd, 0); /* Clear PEC. */


@@ 978,12 978,12 @@ int i2cdump_main(int argc UNUSED_PARAM, char **argv)
		case 's': mode = I2C_SMBUS_BLOCK_DATA;		break;
		case 'i': mode = I2C_SMBUS_I2C_BLOCK_DATA;	break;
		default:
			bb_error_msg_and_die("invalid mode");
			bb_simple_error_msg_and_die("invalid mode");
		}

		if (argv[2][1] == 'p') {
			if (argv[2][0] == 'W' || argv[2][0] == 'i') {
				bb_error_msg_and_die(
				bb_simple_error_msg_and_die(
					"pec not supported for -W and -i");
			} else {
				pec = 1;


@@ 994,7 994,7 @@ int i2cdump_main(int argc UNUSED_PARAM, char **argv)
	if (opts & opt_r) {
		first = strtol(opt_r_str, &dash, 0);
		if (dash == opt_r_str || *dash != '-' || first > 0xff)
			bb_error_msg_and_die("invalid range");
			bb_simple_error_msg_and_die("invalid range");
		last = xstrtou_range(++dash, 0, first, 0xff);

		/* Range is not available for every mode. */


@@ 1007,7 1007,7 @@ int i2cdump_main(int argc UNUSED_PARAM, char **argv)
				break;
			/* Fall through */
		default:
			bb_error_msg_and_die(
			bb_simple_error_msg_and_die(
				"range not compatible with selected mode");
		}
	}


@@ 1032,7 1032,7 @@ int i2cdump_main(int argc UNUSED_PARAM, char **argv)
		if (mode == I2C_SMBUS_BYTE) {
			res = i2c_smbus_write_byte(fd, first);
			if (res < 0)
				bb_perror_msg_and_die("write start address");
				bb_simple_perror_msg_and_die("write start address");
		}

		dump_data(fd, mode, first, last, block, blen);


@@ 1398,7 1398,7 @@ static void check_i2c_func(int fd)
	get_funcs_matrix(fd, &funcs);

	if (!(funcs & I2C_FUNC_I2C))
		bb_error_msg_and_die("adapter does not support I2C transfers");
		bb_simple_error_msg_and_die("adapter does not support I2C transfers");
}

//usage:#define i2ctransfer_trivial_usage


@@ 1451,7 1451,7 @@ int i2ctransfer_main(int argc UNUSED_PARAM, char **argv)
		char *end;

		if (nmsgs >= I2C_RDWR_IOCTL_MAX_MSGS)
			bb_error_msg_and_die("too many messages, max: "I2C_RDWR_IOCTL_MAX_MSGS_STR);
			bb_simple_error_msg_and_die("too many messages, max: "I2C_RDWR_IOCTL_MAX_MSGS_STR);

		flags = 0;
		arg_ptr = *argv;

M miscutils/inotifyd.c => miscutils/inotifyd.c +1 -1
@@ 117,7 117,7 @@ int inotifyd_main(int argc, char **argv)
	// open inotify
	pfd.fd = inotify_init();
	if (pfd.fd < 0)
		bb_perror_msg_and_die("no kernel support");
		bb_simple_perror_msg_and_die("no kernel support");

	// setup watches
	while (*++argv) {

M miscutils/nandwrite.c => miscutils/nandwrite.c +5 -5
@@ 101,7 101,7 @@ static unsigned next_good_eraseblock(int fd, struct mtd_info_user *meminfo,

		if (block_offset >= meminfo->size) {
			if (IS_NANDWRITE)
				bb_error_msg_and_die("not enough space in MTD device");
				bb_simple_error_msg_and_die("not enough space in MTD device");
			return block_offset; /* let the caller exit */
		}
		offs = block_offset;


@@ 174,7 174,7 @@ int nandwrite_main(int argc UNUSED_PARAM, char **argv)
	meminfo_writesize = meminfo.writesize;

	if (mtdoffset & (meminfo_writesize - 1))
		bb_error_msg_and_die("start address is not page aligned");
		bb_simple_error_msg_and_die("start address is not page aligned");

	filebuf = xmalloc(meminfo_writesize);
	oobbuf = xmalloc(meminfo.oobsize);


@@ 248,9 248,9 @@ int nandwrite_main(int argc UNUSED_PARAM, char **argv)
		}
		if (cnt < meminfo_writesize) {
			if (IS_NANDDUMP)
				bb_error_msg_and_die("short read");
				bb_simple_error_msg_and_die("short read");
			if (!(opts & OPT_p))
				bb_error_msg_and_die("input size is not rounded up to page size, "
				bb_simple_error_msg_and_die("input size is not rounded up to page size, "
						"use -p to zero pad");
			/* zero pad to end of write block */
			memset(filebuf + cnt, 0, meminfo_writesize - cnt);


@@ 273,7 273,7 @@ int nandwrite_main(int argc UNUSED_PARAM, char **argv)
		/* We filled entire MTD, but did we reach EOF on input? */
		if (full_read(STDIN_FILENO, filebuf, meminfo_writesize) != 0) {
			/* no */
			bb_error_msg_and_die("not enough space in MTD device");
			bb_simple_error_msg_and_die("not enough space in MTD device");
		}
	}


M miscutils/rfkill.c => miscutils/rfkill.c +1 -1
@@ 88,7 88,7 @@ int rfkill_main(int argc UNUSED_PARAM, char **argv)

	rf_fd = device_open("/dev/rfkill", mode);
	if (rf_fd < 0)
		bb_perror_msg_and_die("/dev/rfkill");
		bb_simple_perror_msg_and_die("/dev/rfkill");

	if (rf_opt & OPT_l) {
		while (full_read(rf_fd, &event, sizeof(event)) == RFKILL_EVENT_SIZE_V1) {

M miscutils/rx.c => miscutils/rx.c +3 -3
@@ 120,7 120,7 @@ static int receive(/*int read_fd, */int file_fd)
		/* Write previously received block */
		errno = 0;
		if (full_write(file_fd, blockBuf, blockLength) != blockLength) {
			bb_perror_msg(bb_msg_write_error);
			bb_simple_perror_msg(bb_msg_write_error);
			goto fatal;
		}



@@ 150,7 150,7 @@ static int receive(/*int read_fd, */int file_fd)
			goto timeout;

		if (blockNo != (255 - blockNoOnesCompl)) {
			bb_error_msg("bad block ones compl");
			bb_simple_error_msg("bad block ones compl");
			goto error;
		}



@@ 229,7 229,7 @@ static int receive(/*int read_fd, */int file_fd)
				do_crc = 0;
				goto timeout;
			}
			bb_error_msg("too many errors; giving up");
			bb_simple_error_msg("too many errors; giving up");
 fatal:
			/* 5 CAN followed by 5 BS. Don't try too hard... */
			safe_write(write_fd, "\030\030\030\030\030\010\010\010\010\010", 10);

M miscutils/time.c => miscutils/time.c +1 -1
@@ 88,7 88,7 @@ static void resuse_end(pid_t pid, resource_t *resp)
	 * returns the child process, set the time the command finished. */
	while ((caught = wait3(&resp->waitstatus, 0, &resp->ru)) != pid) {
		if (caught == -1 && errno != EINTR) {
			bb_perror_msg("wait");
			bb_simple_perror_msg("wait");
			return;
		}
	}

M miscutils/ubi_tools.c => miscutils/ubi_tools.c +5 -5
@@ 234,10 234,10 @@ int ubi_tools_main(int argc UNUSED_PARAM, char **argv)
			//	bb_error_msg_and_die("%s invalid maximum size calculated", "UBI");
		} else
		if (!(opts & OPTION_s))
			bb_error_msg_and_die("size not specified");
			bb_simple_error_msg_and_die("size not specified");

		if (!(opts & OPTION_N))
			bb_error_msg_and_die("name not specified");
			bb_simple_error_msg_and_die("name not specified");

		/* the structure is memset(0) above */
		mkvol_req.vol_id = vol_id;


@@ 264,7 264,7 @@ int ubi_tools_main(int argc UNUSED_PARAM, char **argv)
//usage:     "\n	-N VOLNAME	Volume name"
	if (do_rmvol) {
		if (!(opts & (OPTION_n|OPTION_N)))
			bb_error_msg_and_die("volume id not specified");
			bb_simple_error_msg_and_die("volume id not specified");

		if (opts & OPTION_N) {
			unsigned num = ubi_devnum_from_devname(ubi_ctrl);


@@ 288,9 288,9 @@ int ubi_tools_main(int argc UNUSED_PARAM, char **argv)
//usage:     "\n	-s SIZE		Size in bytes"
	if (do_rsvol) {
		if (!(opts & OPTION_s))
			bb_error_msg_and_die("size not specified");
			bb_simple_error_msg_and_die("size not specified");
		if (!(opts & OPTION_n))
			bb_error_msg_and_die("volume id not specified");
			bb_simple_error_msg_and_die("volume id not specified");

		rsvol_req.bytes = size_bytes; /* signed int64_t */
		rsvol_req.vol_id = vol_id;

M miscutils/ubirename.c => miscutils/ubirename.c +1 -1
@@ 72,7 72,7 @@ int ubirename_main(int argc, char **argv)
	rnvol = xzalloc(sizeof(*rnvol));
	rnvol->count = --argc;
	if (argc > ARRAY_SIZE(rnvol->ents))
		bb_error_msg_and_die("too many renames requested");
		bb_simple_error_msg_and_die("too many renames requested");

	ubi_devname = argv[1];
	ubi_devnum = ubi_devnum_from_devname(ubi_devname);

M modutils/modutils-24.c => modutils/modutils-24.c +13 -13
@@ 2600,7 2600,7 @@ static void new_get_kernel_symbols(void)
			module_names = xrealloc(module_names, bufsize);
			goto retry_modules_load;
		}
		bb_perror_msg_and_die("QM_MODULES");
		bb_simple_perror_msg_and_die("QM_MODULES");
	}

	n_ext_modules = nmod = ret;


@@ 2661,7 2661,7 @@ static void new_get_kernel_symbols(void)
			syms = xrealloc(syms, bufsize);
			goto retry_kern_sym_load;
		}
		bb_perror_msg_and_die("kernel: QM_SYMBOLS");
		bb_simple_perror_msg_and_die("kernel: QM_SYMBOLS");
	}
	nksyms = nsyms = ret;
	ksyms = syms;


@@ 3247,21 3247,21 @@ static struct obj_file *obj_load(char *image, size_t image_size, int loadprogbit
	f->load_order_search_start = &f->load_order;

	if (image_size < sizeof(f->header))
		bb_error_msg_and_die("error while loading ELF header");
		bb_simple_error_msg_and_die("error while loading ELF header");
	memcpy(&f->header, image, sizeof(f->header));

	if (*(aliased_uint32_t*)(&f->header.e_ident) != ELFMAG_U32) {
		bb_error_msg_and_die("not an ELF file");
		bb_simple_error_msg_and_die("not an ELF file");
	}
	if (f->header.e_ident[EI_CLASS] != ELFCLASSM
	 || f->header.e_ident[EI_DATA] != (BB_BIG_ENDIAN ? ELFDATA2MSB : ELFDATA2LSB)
	 || f->header.e_ident[EI_VERSION] != EV_CURRENT
	 || !MATCH_MACHINE(f->header.e_machine)
	) {
		bb_error_msg_and_die("ELF file not for this architecture");
		bb_simple_error_msg_and_die("ELF file not for this architecture");
	}
	if (f->header.e_type != ET_REL) {
		bb_error_msg_and_die("ELF file not a relocatable object");
		bb_simple_error_msg_and_die("ELF file not a relocatable object");
	}

	/* Read the section headers.  */


@@ 3280,7 3280,7 @@ static struct obj_file *obj_load(char *image, size_t image_size, int loadprogbit

	section_headers = alloca(sizeof(ElfW(Shdr)) * shnum);
	if (image_size < f->header.e_shoff + sizeof(ElfW(Shdr)) * shnum)
		bb_error_msg_and_die("error while loading section headers");
		bb_simple_error_msg_and_die("error while loading section headers");
	memcpy(section_headers, image + f->header.e_shoff, sizeof(ElfW(Shdr)) * shnum);

	/* Read the section data.  */


@@ 3317,16 3317,16 @@ static struct obj_file *obj_load(char *image, size_t image_size, int loadprogbit
				if (sec->header.sh_size > 0) {
					sec->contents = xmalloc(sec->header.sh_size);
					if (image_size < (sec->header.sh_offset + sec->header.sh_size))
						bb_error_msg_and_die("error while loading section data");
						bb_simple_error_msg_and_die("error while loading section data");
					memcpy(sec->contents, image + sec->header.sh_offset, sec->header.sh_size);
				}
				break;
#if SHT_RELM == SHT_REL
			case SHT_RELA:
				bb_error_msg_and_die("RELA relocations not supported on this architecture");
				bb_simple_error_msg_and_die("RELA relocations not supported on this architecture");
#else
			case SHT_REL:
				bb_error_msg_and_die("REL relocations not supported on this architecture");
				bb_simple_error_msg_and_die("REL relocations not supported on this architecture");
#endif
			default:
				if (sec->header.sh_type >= SHT_LOPROC) {


@@ 3447,7 3447,7 @@ static int obj_load_progbits(char *image, size_t image_size, struct obj_file *f,
			continue;
		sec->contents = imagebase + (sec->header.sh_addr - base);
		if (image_size < (sec->header.sh_offset + sec->header.sh_size)) {
			bb_error_msg("error reading ELF section data");
			bb_simple_error_msg("error reading ELF section data");
			return 0; /* need to delete half-loaded module! */
		}
		memcpy(sec->contents, image + sec->header.sh_offset, sec->header.sh_size);


@@ 3845,7 3845,7 @@ int FAST_FUNC bb_init_module_24(const char *m_filename, const char *options)
		if (m_has_modinfo) {
			int m_version = new_get_module_version(f, m_strversion);
			if (m_version == -1) {
				bb_error_msg_and_die("can't find the kernel version "
				bb_simple_error_msg_and_die("can't find the kernel version "
					"the module was compiled for");
			}
		}


@@ 3864,7 3864,7 @@ int FAST_FUNC bb_init_module_24(const char *m_filename, const char *options)
#endif

	if (query_module(NULL, 0, NULL, 0, NULL))
		bb_error_msg_and_die("old (unsupported) kernel");
		bb_simple_error_msg_and_die("old (unsupported) kernel");
	new_get_kernel_symbols();
	k_crcs = new_is_kernel_checksummed();


M modutils/rmmod.c => modutils/rmmod.c +1 -1
@@ 52,7 52,7 @@ int rmmod_main(int argc UNUSED_PARAM, char **argv)
		/* Unload _all_ unused modules via NULL delete_module() call */
		err = bb_delete_module(NULL, flags);
		if (err && err != EFAULT)
			bb_perror_msg_and_die("rmmod");
			bb_simple_perror_msg_and_die("rmmod");
		return EXIT_SUCCESS;
	}


M networking/arp.c => networking/arp.c +18 -18
@@ 116,7 116,7 @@ static int arp_del(char **args)
	/* Resolve the host name. */
	host = *args;
	if (ap->input(host, &sa) < 0) {
		bb_herror_msg_and_die("%s", host);
		bb_simple_herror_msg_and_die(host);
	}

	/* If a host has more than one address, use the correct one! */


@@ 149,7 149,7 @@ static int arp_del(char **args)
#ifdef HAVE_ATF_DONTPUB
			req.arp_flags |= ATF_DONTPUB;
#else
			bb_error_msg("feature ATF_DONTPUB is not supported");
			bb_simple_error_msg("feature ATF_DONTPUB is not supported");
#endif
			args++;
			break;


@@ 157,7 157,7 @@ static int arp_del(char **args)
#ifdef HAVE_ATF_MAGIC
			req.arp_flags |= ATF_MAGIC;
#else
			bb_error_msg("feature ATF_MAGIC is not supported");
			bb_simple_error_msg("feature ATF_MAGIC is not supported");
#endif
			args++;
			break;


@@ 173,7 173,7 @@ static int arp_del(char **args)
			if (strcmp(*args, "255.255.255.255") != 0) {
				host = *args;
				if (ap->input(host, &sa) < 0) {
					bb_herror_msg_and_die("%s", host);
					bb_simple_herror_msg_and_die(host);
				}
				memcpy(&req.arp_netmask, &sa, sizeof(struct sockaddr));
				req.arp_flags |= ATF_NETMASK;


@@ 195,7 195,7 @@ static int arp_del(char **args)
	/* Call the kernel. */
	if (flags & 2) {
		if (option_mask32 & ARP_OPT_v)
			bb_error_msg("SIOCDARP(nopub)");
			bb_simple_error_msg("SIOCDARP(nopub)");
		err = ioctl(sockfd, SIOCDARP, &req);
		if (err < 0) {
			if (errno == ENXIO) {


@@ 204,20 204,20 @@ static int arp_del(char **args)
				printf("No ARP entry for %s\n", host);
				return -1;
			}
			bb_perror_msg_and_die("SIOCDARP(priv)");
			bb_simple_perror_msg_and_die("SIOCDARP(priv)");
		}
	}
	if ((flags & 1) && err) {
 nopub:
		req.arp_flags |= ATF_PUBL;
		if (option_mask32 & ARP_OPT_v)
			bb_error_msg("SIOCDARP(pub)");
			bb_simple_error_msg("SIOCDARP(pub)");
		if (ioctl(sockfd, SIOCDARP, &req) < 0) {
			if (errno == ENXIO) {
				printf("No ARP entry for %s\n", host);
				return -1;
			}
			bb_perror_msg_and_die("SIOCDARP(pub)");
			bb_simple_perror_msg_and_die("SIOCDARP(pub)");
		}
	}
	return 0;


@@ 233,7 233,7 @@ static void arp_getdevhw(char *ifname, struct sockaddr *sa)
	ioctl_or_perror_and_die(sockfd, SIOCGIFHWADDR, &ifr,
					"can't get HW-Address for '%s'", ifname);
	if (hw_set && (ifr.ifr_hwaddr.sa_family != hw->type)) {
		bb_error_msg_and_die("protocol type mismatch");
		bb_simple_error_msg_and_die("protocol type mismatch");
	}
	memcpy(sa, &(ifr.ifr_hwaddr), sizeof(struct sockaddr));



@@ 261,20 261,20 @@ static int arp_set(char **args)

	host = *args++;
	if (ap->input(host, &sa) < 0) {
		bb_herror_msg_and_die("%s", host);
		bb_simple_herror_msg_and_die(host);
	}
	/* If a host has more than one address, use the correct one! */
	memcpy(&req.arp_pa, &sa, sizeof(struct sockaddr));

	/* Fetch the hardware address. */
	if (*args == NULL) {
		bb_error_msg_and_die("need hardware address");
		bb_simple_error_msg_and_die("need hardware address");
	}
	if (option_mask32 & ARP_OPT_D) {
		arp_getdevhw(*args++, &req.arp_ha);
	} else {
		if (hw->input(*args++, &req.arp_ha) < 0) {
			bb_error_msg_and_die("invalid hardware address");
			bb_simple_error_msg_and_die("invalid hardware address");
		}
	}



@@ 302,7 302,7 @@ static int arp_set(char **args)
#ifdef HAVE_ATF_DONTPUB
			flags |= ATF_DONTPUB;
#else
			bb_error_msg("feature ATF_DONTPUB is not supported");
			bb_simple_error_msg("feature ATF_DONTPUB is not supported");
#endif
			args++;
			break;


@@ 310,7 310,7 @@ static int arp_set(char **args)
#ifdef HAVE_ATF_MAGIC
			flags |= ATF_MAGIC;
#else
			bb_error_msg("feature ATF_MAGIC is not supported");
			bb_simple_error_msg("feature ATF_MAGIC is not supported");
#endif
			args++;
			break;


@@ 326,7 326,7 @@ static int arp_set(char **args)
			if (strcmp(*args, "255.255.255.255") != 0) {
				host = *args;
				if (ap->input(host, &sa) < 0) {
					bb_herror_msg_and_die("%s", host);
					bb_simple_herror_msg_and_die(host);
				}
				memcpy(&req.arp_netmask, &sa, sizeof(struct sockaddr));
				flags |= ATF_NETMASK;


@@ 346,7 346,7 @@ static int arp_set(char **args)

	/* Call the kernel. */
	if (option_mask32 & ARP_OPT_v)
		bb_error_msg("SIOCSARP()");
		bb_simple_error_msg("SIOCSARP()");
	xioctl(sockfd, SIOCSARP, &req);
	return 0;
}


@@ 422,7 422,7 @@ static int arp_show(char *name)
	if (name != NULL) {
		/* Resolve the host name. */
		if (ap->input(name, &sa) < 0) {
			bb_herror_msg_and_die("%s", name);
			bb_simple_herror_msg_and_die(name);
		}
		host = xstrdup(ap->sprint(&sa, 1));
	}


@@ 530,7 530,7 @@ int arp_main(int argc UNUSED_PARAM, char **argv)
	/* Now see what we have to do here... */
	if (opts & (ARP_OPT_d | ARP_OPT_s)) {
		if (argv[0] == NULL)
			bb_error_msg_and_die("need host name");
			bb_simple_error_msg_and_die("need host name");
		if (opts & ARP_OPT_s)
			return arp_set(argv);
		return arp_del(argv);

M networking/arping.c => networking/arping.c +2 -2
@@ 375,7 375,7 @@ int arping_main(int argc UNUSED_PARAM, char **argv)
			xconnect(probe_fd, (struct sockaddr *) &G.probe_saddr, sizeof(G.probe_saddr));
			bb_getsockname(probe_fd, (struct sockaddr *) &G.probe_saddr, sizeof(G.probe_saddr));
			if (G.probe_saddr.sin_family != AF_INET)
				bb_error_msg_and_die("no IP address configured");
				bb_simple_error_msg_and_die("no IP address configured");
			src = G.probe_saddr.sin_addr;
		}
		close(probe_fd);


@@ 430,7 430,7 @@ int arping_main(int argc UNUSED_PARAM, char **argv)
		/* Don't allow SIGALRMs while we process the reply */
		sigprocmask(SIG_BLOCK, &G.sset, NULL);
		if (cc < 0) {
			bb_perror_msg("recvfrom");
			bb_simple_perror_msg("recvfrom");
			continue;
		}
		recv_pack(G.packet, cc, &from);

M networking/dnsd.c => networking/dnsd.c +4 -4
@@ 395,11 395,11 @@ static int process_packet(struct dns_entry *conf_data,

	head = (struct dns_head *)buf;
	if (head->nquer == 0) {
		bb_error_msg("packet has 0 queries, ignored");
		bb_simple_error_msg("packet has 0 queries, ignored");
		return 0; /* don't reply */
	}
	if (head->flags & htons(0x8000)) { /* QR bit */
		bb_error_msg("response packet, ignored");
		bb_simple_error_msg("response packet, ignored");
		return 0; /* don't reply */
	}
	/* QR = 1 "response", RCODE = 4 "Not Implemented" */


@@ 474,7 474,7 @@ static int process_packet(struct dns_entry *conf_data,
	 * RCODE = 0 "success"
	 */
	if (OPT_verbose)
		bb_info_msg("returning positive reply");
		bb_simple_info_msg("returning positive reply");
	outr_flags = htons(0x8000 | 0x0400 | 0);
	/* we have one answer */
	head->nansw = htons(1);


@@ 557,7 557,7 @@ int dnsd_main(int argc UNUSED_PARAM, char **argv)
			continue;
		}
		if (OPT_verbose)
			bb_info_msg("got UDP packet");
			bb_simple_info_msg("got UDP packet");
		buf[r] = '\0'; /* paranoia */
		r = process_packet(conf_data, conf_ttl, buf);
		if (r <= 0)

M networking/ether-wake.c => networking/ether-wake.c +2 -2
@@ 182,7 182,7 @@ static int get_wol_pw(const char *ethoptarg, unsigned char *wol_passwd)
		byte_cnt = sscanf(ethoptarg, "%u.%u.%u.%u",
		                  &passwd[0], &passwd[1], &passwd[2], &passwd[3]);
	if (byte_cnt < 4) {
		bb_error_msg("can't read Wake-On-LAN pass");
		bb_simple_error_msg("can't read Wake-On-LAN pass");
		return 0;
	}
// TODO: check invalid numbers >255??


@@ 266,7 266,7 @@ int ether_wake_main(int argc UNUSED_PARAM, char **argv)
	/* This is necessary for broadcasts to work */
	if (flags /* & 1 OPT_BROADCAST */) {
		if (setsockopt_broadcast(s) != 0)
			bb_perror_msg("SO_BROADCAST");
			bb_simple_perror_msg("SO_BROADCAST");
	}

#if defined(PF_PACKET)

M networking/ftpgetput.c => networking/ftpgetput.c +1 -1
@@ 214,7 214,7 @@ int ftp_receive(const char *local_path, char *server_path)
		struct stat sbuf;
		/* lstat would be wrong here! */
		if (stat(local_path, &sbuf) < 0) {
			bb_perror_msg_and_die("stat");
			bb_simple_perror_msg_and_die("stat");
		}
		if (sbuf.st_size > 0) {
			beg_range = sbuf.st_size;

M networking/hostname.c => networking/hostname.c +1 -1
@@ 61,7 61,7 @@ static void do_sethostname(char *s, int isfile)
	} else if (sethostname(s, strlen(s))) {
//		if (errno == EPERM)
//			bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);
		bb_perror_msg_and_die("sethostname");
		bb_simple_perror_msg_and_die("sethostname");
	}
}


M networking/httpd.c => networking/httpd.c +5 -5
@@ 1025,7 1025,7 @@ static void log_and_exit(void)
	*/

	if (verbose > 2)
		bb_error_msg("closed");
		bb_simple_error_msg("closed");
	_exit(xfunc_error_retval);
}



@@ 1220,7 1220,7 @@ static void send_headers(unsigned responseNum)
	}
	if (full_write(STDOUT_FILENO, iobuf, len) != len) {
		if (verbose > 1)
			bb_perror_msg("error");
			bb_simple_perror_msg("error");
		log_and_exit();
	}
}


@@ 1838,7 1838,7 @@ static NOINLINE void send_file_and_exit(const char *url, int what)
	if (count < 0) {
 IF_FEATURE_USE_SENDFILE(fin:)
		if (verbose > 1)
			bb_perror_msg("error");
			bb_simple_perror_msg("error");
	}
	log_and_exit();
}


@@ 2149,7 2149,7 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr)
		if (rmt_ip_str)
			applet_name = rmt_ip_str;
		if (verbose > 2)
			bb_error_msg("connected");
			bb_simple_error_msg("connected");
	}
	if_ip_denied_send_HTTP_FORBIDDEN_and_exit(remote_ip);



@@ 2746,7 2746,7 @@ int httpd_main(int argc UNUSED_PARAM, char **argv)
		if (opt & OPT_SETUID) {
			if (ugid.gid != (gid_t)-1) {
				if (setgroups(1, &ugid.gid) == -1)
					bb_perror_msg_and_die("setgroups");
					bb_simple_perror_msg_and_die("setgroups");
				xsetgid(ugid.gid);
			}
			xsetuid(ugid.uid);

M networking/ifconfig.c => networking/ifconfig.c +1 -1
@@ 361,7 361,7 @@ int ifconfig_main(int argc UNUSED_PARAM, char **argv)
#if ENABLE_FEATURE_IFCONFIG_STATUS
		return display_interfaces(argv[0] ? argv[0] : show_all_param);
#else
		bb_error_msg_and_die("no support for status display");
		bb_simple_error_msg_and_die("no support for status display");
#endif
	}


M networking/ifplugd.c => networking/ifplugd.c +8 -8
@@ 365,7 365,7 @@ static void up_iface(void)
	if (!(ifrequest.ifr_flags & IFF_UP)) {
		ifrequest.ifr_flags |= IFF_UP;
		/* Let user know we mess up with interface */
		bb_info_msg("upping interface");
		bb_simple_info_msg("upping interface");
		if (network_ioctl(SIOCSIFFLAGS, &ifrequest, "setting interface flags") < 0) {
			if (errno != ENODEV && errno != EADDRNOTAVAIL)
				xfunc_die();


@@ 461,7 461,7 @@ static smallint detect_link(void)
		else if (option_mask32 & FLAG_IGNORE_FAIL_POSITIVE)
			status = IFSTATUS_UP;
		else if (G.api_mode[0] == 'a')
			bb_error_msg("can't detect link status");
			bb_simple_error_msg("can't detect link status");
	}

	if (status != G.iface_last_status) {


@@ 493,14 493,14 @@ static NOINLINE int check_existence_through_netlink(void)
				goto ret;
			if (errno == EINTR)
				continue;
			bb_perror_msg("netlink: recv");
			bb_simple_perror_msg("netlink: recv");
			return -1;
		}

		mhdr = (struct nlmsghdr*)replybuf;
		while (bytes > 0) {
			if (!NLMSG_OK(mhdr, bytes)) {
				bb_error_msg("netlink packet too small or truncated");
				bb_simple_error_msg("netlink packet too small or truncated");
				return -1;
			}



@@ 509,7 509,7 @@ static NOINLINE int check_existence_through_netlink(void)
				int attr_len;

				if (mhdr->nlmsg_len < NLMSG_LENGTH(sizeof(struct ifinfomsg))) {
					bb_error_msg("netlink packet too small or truncated");
					bb_simple_error_msg("netlink packet too small or truncated");
					return -1;
				}



@@ 591,7 591,7 @@ int ifplugd_main(int argc UNUSED_PARAM, char **argv)
	}

	if (pid_from_pidfile > 0 && kill(pid_from_pidfile, 0) == 0)
		bb_error_msg_and_die("daemon already running");
		bb_simple_error_msg_and_die("daemon already running");
#endif

	api_mode_found = strchr(api_modes, G.api_mode[0]);


@@ 690,7 690,7 @@ int ifplugd_main(int argc UNUSED_PARAM, char **argv)
		) {
			if (errno == EINTR)
				continue;
			bb_perror_msg("poll");
			bb_simple_perror_msg("poll");
			goto exiting;
		}



@@ 763,5 763,5 @@ int ifplugd_main(int argc UNUSED_PARAM, char **argv)

 exiting:
	remove_pidfile(pidfile_name);
	bb_error_msg_and_die("exiting");
	bb_simple_error_msg_and_die("exiting");
}

M networking/ifupdown.c => networking/ifupdown.c +2 -2
@@ 665,7 665,7 @@ static int FAST_FUNC dhcp_up(struct interface_defn_t *ifd, execfn *exec)
		if (executable_exists(ext_dhcp_clients[i].name))
			return execute(ext_dhcp_clients[i].startcmd, ifd, exec);
	}
	bb_error_msg("no dhcp clients found");
	bb_simple_error_msg("no dhcp clients found");
	return 0;
}
# elif ENABLE_UDHCPC


@@ 707,7 707,7 @@ static int FAST_FUNC dhcp_down(struct interface_defn_t *ifd, execfn *exec)
	}

	if (!result)
		bb_error_msg("warning: no dhcp clients found and stopped");
		bb_simple_error_msg("warning: no dhcp clients found and stopped");

	/* Sleep a bit, otherwise static_down tries to bring down interface too soon,
	   and it may come back up because udhcpc is still shutting down */

M networking/inetd.c => networking/inetd.c +10 -10
@@ 504,7 504,7 @@ static void register_rpc(servtab_t *sep)

	if (bb_getsockname(sep->se_fd, (struct sockaddr *) &ir_sin, sizeof(ir_sin)) < 0) {
//TODO: verify that such failure is even possible in Linux kernel
		bb_perror_msg("getsockname");
		bb_simple_perror_msg("getsockname");
		return;
	}



@@ 544,7 544,7 @@ static void bump_nofile(void)
	}

	if (setrlimit(RLIMIT_NOFILE, &rl) < 0) {
		bb_perror_msg("setrlimit");
		bb_simple_perror_msg("setrlimit");
		return;
	}



@@ 599,7 599,7 @@ static void prepare_socket_fd(servtab_t *sep)

	fd = socket(sep->se_family, sep->se_socktype, 0);
	if (fd < 0) {
		bb_perror_msg("socket");
		bb_simple_perror_msg("socket");
		return;
	}
	setsockopt_reuseaddr(fd);


@@ 815,7 815,7 @@ static NOINLINE servtab_t *parse_one_line(void)
			n = bb_strtou(p, &p, 10);
			if (n > INT_MAX) {
 bad_ver_spec:
				bb_error_msg("bad rpc version");
				bb_simple_error_msg("bad rpc version");
				goto parse_err;
			}
			sep->se_rpcver_lo = sep->se_rpcver_hi = n;


@@ 829,7 829,7 @@ static NOINLINE servtab_t *parse_one_line(void)
			if (*p != '\0')
				goto bad_ver_spec;
#else
			bb_error_msg("no support for rpc services");
			bb_simple_error_msg("no support for rpc services");
			goto parse_err;
#endif
		}


@@ 1235,7 1235,7 @@ int inetd_main(int argc UNUSED_PARAM, char **argv)
	if (argv[0])
		config_filename = argv[0];
	if (config_filename == NULL)
		bb_error_msg_and_die("non-root must specify config file");
		bb_simple_error_msg_and_die("non-root must specify config file");
	if (!(opt & 2))
		bb_daemonize_or_rexec(0, argv - optind);
	else


@@ 1304,7 1304,7 @@ int inetd_main(int argc UNUSED_PARAM, char **argv)
		ready_fd_cnt = select(maxsock + 1, &readable, NULL, NULL, NULL);
		if (ready_fd_cnt < 0) {
			if (errno != EINTR) {
				bb_perror_msg("select");
				bb_simple_perror_msg("select");
				sleep(1);
			}
			continue;


@@ 1405,7 1405,7 @@ int inetd_main(int argc UNUSED_PARAM, char **argv)
					pid = vfork();

				if (pid < 0) { /* fork error */
					bb_perror_msg("vfork"+1);
					bb_simple_perror_msg("vfork"+1);
					sleep(1);
					restore_sigmask(&omask);
					maybe_close(new_udp_fd);


@@ 1488,7 1488,7 @@ int inetd_main(int argc UNUSED_PARAM, char **argv)
			}
			if (real_uid != 0 && real_uid != pwd->pw_uid) {
				/* a user running private inetd */
				bb_error_msg("non-root must run services as himself");
				bb_simple_error_msg("non-root must run services as himself");
				goto do_exit1;
			}
			if (pwd->pw_uid != real_uid) {


@@ 1502,7 1502,7 @@ int inetd_main(int argc UNUSED_PARAM, char **argv)
			}
			if (rlim_ofile.rlim_cur != rlim_ofile_cur)
				if (setrlimit(RLIMIT_NOFILE, &rlim_ofile) < 0)
					bb_perror_msg("setrlimit");
					bb_simple_perror_msg("setrlimit");

			/* closelog(); - WRONG. we are after vfork,
			 * this may confuse syslog() internal state.

M networking/ipcalc.c => networking/ipcalc.c +1 -1
@@ 183,7 183,7 @@ int ipcalc_main(int argc UNUSED_PARAM, char **argv)

	if (argv[1]) {
		if (ENABLE_FEATURE_IPCALC_FANCY && have_netmask) {
			bb_error_msg_and_die("use prefix or netmask, not both");
			bb_simple_error_msg_and_die("use prefix or netmask, not both");
		}
		if (inet_aton(argv[1], &s_netmask) == 0) {
			bb_error_msg_and_die("bad netmask: %s", argv[1]);

M networking/isrv.c => networking/isrv.c +2 -2
@@ 185,7 185,7 @@ static void handle_accept(isrv_state_t *state, int fd)
		/* Most probably someone gave us wrong fd type
		 * (for example, non-socket). Don't want
		 * to loop forever. */
		bb_perror_msg_and_die("accept");
		bb_simple_perror_msg_and_die("accept");
	}

	DPRINTF("new_peer(%d)", newfd);


@@ 311,7 311,7 @@ void isrv_run(

		if (n < 0) {
			if (errno != EINTR)
				bb_perror_msg("select");
				bb_simple_perror_msg("select");
			continue;
		}


M networking/libiproute/ipaddress.c => networking/libiproute/ipaddress.c +5 -5
@@ 119,7 119,7 @@ static NOINLINE int print_linkinfo(const struct nlmsghdr *n)
	//memset(tb, 0, sizeof(tb)); - parse_rtattr does this
	parse_rtattr(tb, IFLA_MAX, IFLA_RTA(ifi), len);
	if (tb[IFLA_IFNAME] == NULL) {
		bb_error_msg("nil ifname");
		bb_simple_error_msg("nil ifname");
		return -1;
	}
	if (G_filter.label


@@ 205,7 205,7 @@ static NOINLINE int print_linkinfo(const struct nlmsghdr *n)
static int flush_update(void)
{
	if (rtnl_send_check(G_filter.rth, G_filter.flushb, G_filter.flushp) < 0) {
		bb_perror_msg("can't send flush request");
		bb_simple_perror_msg("can't send flush request");
		return -1;
	}
	G_filter.flushp = 0;


@@ 439,7 439,7 @@ int FAST_FUNC ipaddr_list_or_flush(char **argv, int flush)
			bb_error_msg_and_die(bb_msg_requires_arg, "flush");
		}
		if (G_filter.family == AF_PACKET) {
			bb_error_msg_and_die("can't flush link addresses");
			bb_simple_error_msg_and_die("can't flush link addresses");
		}
	}



@@ 700,7 700,7 @@ static int ipaddr_modify(int cmd, int flags, char **argv)

	if (!d) {
		/* There was no "dev IFACE", but we need that */
		bb_error_msg_and_die("need \"dev IFACE\"");
		bb_simple_error_msg_and_die("need \"dev IFACE\"");
	}
	if (l && !is_prefixed_with(l, d)) {
		bb_error_msg_and_die("\"dev\" (%s) must match \"label\" (%s)", d, l);


@@ 717,7 717,7 @@ static int ipaddr_modify(int cmd, int flags, char **argv)
		inet_prefix brd;
		int i;
		if (req.ifa.ifa_family != AF_INET) {
			bb_error_msg_and_die("broadcast can be set only for IPv4 addresses");
			bb_simple_error_msg_and_die("broadcast can be set only for IPv4 addresses");
		}
		brd = peer;
		if (brd.bitlen <= 30) {

M networking/libiproute/ipneigh.c => networking/libiproute/ipneigh.c +4 -4
@@ 49,7 49,7 @@ typedef struct filter_t filter_t;
static int flush_update(void)
{
	if (rtnl_send_check(G_filter.rth, G_filter.flushb, G_filter.flushp) < 0) {
		bb_perror_msg("can't send flush request");
		bb_simple_perror_msg("can't send flush request");
		return -1;
	}
	G_filter.flushp = 0;


@@ 305,7 305,7 @@ static int FAST_FUNC ipneigh_list_or_flush(char **argv, int flush)
			xrtnl_wilddump_request(&rth, G_filter.family, RTM_GETNEIGH);
			G_filter.flushed = 0;
			if (xrtnl_dump_filter(&rth, print_neigh, NULL) < 0) {
				bb_perror_msg_and_die("flush terminated");
				bb_simple_perror_msg_and_die("flush terminated");
			}
			if (G_filter.flushed == 0) {
				if (round == 0)


@@ 325,11 325,11 @@ static int FAST_FUNC ipneigh_list_or_flush(char **argv, int flush)
	ndm.ndm_family = G_filter.family;

	if (rtnl_dump_request(&rth, RTM_GETNEIGH, &ndm, sizeof(struct ndmsg)) < 0) {
		bb_perror_msg_and_die("can't send dump request");
		bb_simple_perror_msg_and_die("can't send dump request");
	}

	if (xrtnl_dump_filter(&rth, print_neigh, NULL) < 0) {
		bb_error_msg_and_die("dump terminated");
		bb_simple_error_msg_and_die("dump terminated");
	}

	return 0;

M networking/libiproute/iproute.c => networking/libiproute/iproute.c +6 -6
@@ 57,7 57,7 @@ typedef struct filter_t filter_t;
static int flush_update(void)
{
	if (rtnl_send_check(G_filter.rth, G_filter.flushb, G_filter.flushp) < 0) {
		bb_perror_msg("can't send flush request");
		bb_simple_perror_msg("can't send flush request");
		return -1;
	}
	G_filter.flushp = 0;


@@ 756,7 756,7 @@ static void iproute_flush_cache(void)
	}

	if (write(flush_fd, "-1", 2) < 2) {
		bb_perror_msg("can't flush routing cache");
		bb_simple_perror_msg("can't flush routing cache");
		return;
	}
	close(flush_fd);


@@ 948,7 948,7 @@ static int iproute_list_or_flush(char **argv, int flush)
	if (G_filter.tb != -1) {
		xrtnl_wilddump_request(&rth, do_ipv6, RTM_GETROUTE);
	} else if (rtnl_rtcache_request(&rth, do_ipv6) < 0) {
		bb_perror_msg_and_die("can't send dump request");
		bb_simple_perror_msg_and_die("can't send dump request");
	}
	xrtnl_dump_filter(&rth, print_route, NULL);



@@ 1041,7 1041,7 @@ static int iproute_get(char **argv)
	}

	if (req.r.rtm_dst_len == 0) {
		bb_error_msg_and_die("need at least destination address");
		bb_simple_error_msg_and_die("need at least destination address");
	}

	xrtnl_open(&rth);


@@ 1077,7 1077,7 @@ static int iproute_get(char **argv)
		print_route(NULL, &req.n, NULL);

		if (req.n.nlmsg_type != RTM_NEWROUTE) {
			bb_error_msg_and_die("not a route?");
			bb_simple_error_msg_and_die("not a route?");
		}
		len -= NLMSG_LENGTH(sizeof(*r));
		if (len < 0) {


@@ 1091,7 1091,7 @@ static int iproute_get(char **argv)
			tb[RTA_PREFSRC]->rta_type = RTA_SRC;
			r->rtm_src_len = 8*RTA_PAYLOAD(tb[RTA_PREFSRC]);
		} else if (!tb[RTA_SRC]) {
			bb_error_msg_and_die("can't connect the route");
			bb_simple_error_msg_and_die("can't connect the route");
		}
		if (!odev && tb[RTA_OIF]) {
			tb[RTA_OIF]->rta_type = 0;

M networking/libiproute/iptunnel.c => networking/libiproute/iptunnel.c +5 -5
@@ 338,7 338,7 @@ static void parse_args(char **argv, int cmd, struct ip_tunnel_parm *p)

	if (p->iph.protocol == IPPROTO_IPIP || p->iph.protocol == IPPROTO_IPV6) {
		if ((p->i_flags & GRE_KEY) || (p->o_flags & GRE_KEY)) {
			bb_error_msg_and_die("keys are not allowed with ipip and sit");
			bb_simple_error_msg_and_die("keys are not allowed with ipip and sit");
		}
	}



@@ 355,7 355,7 @@ static void parse_args(char **argv, int cmd, struct ip_tunnel_parm *p)
		p->o_flags |= GRE_KEY;
	}
	if (IN_MULTICAST(ntohl(p->iph.daddr)) && !p->iph.saddr) {
		bb_error_msg_and_die("broadcast tunnel requires a source address");
		bb_simple_error_msg_and_die("broadcast tunnel requires a source address");
	}
}



@@ 367,7 367,7 @@ static int do_add(int cmd, char **argv)
	parse_args(argv, cmd, &p);

	if (p.iph.ttl && p.iph.frag_off == 0) {
		bb_error_msg_and_die("ttl != 0 and noptmudisc are incompatible");
		bb_simple_error_msg_and_die("ttl != 0 and noptmudisc are incompatible");
	}

	switch (p.iph.protocol) {


@@ 378,7 378,7 @@ static int do_add(int cmd, char **argv)
	case IPPROTO_IPV6:
		return do_add_ioctl(cmd, "sit0", &p);
	default:
		bb_error_msg_and_die("can't determine tunnel mode (ipip, gre or sit)");
		bb_simple_error_msg_and_die("can't determine tunnel mode (ipip, gre or sit)");
	}
}



@@ 485,7 485,7 @@ static void do_tunnels_list(struct ip_tunnel_parm *p)
		if (ptr == NULL ||
		    (*ptr++ = 0, sscanf(buf, "%s", name) != 1)
		) {
			bb_error_msg("wrong format of /proc/net/dev");
			bb_simple_error_msg("wrong format of /proc/net/dev");
			return;
		}
		if (sscanf(ptr, "%lu%lu%lu%lu%lu%lu%lu%*d%lu%lu%lu%lu%lu%lu%lu",

M networking/libiproute/libnetlink.c => networking/libiproute/libnetlink.c +15 -15
@@ 79,7 79,7 @@ int FAST_FUNC rtnl_send_check(struct rtnl_handle *rth, const void *buf, int len)
		if (h->nlmsg_type == NLMSG_ERROR) {
			struct nlmsgerr *err = (struct nlmsgerr*)NLMSG_DATA(h);
			if (h->nlmsg_len < NLMSG_LENGTH(sizeof(struct nlmsgerr)))
				bb_error_msg("ERROR truncated");
				bb_simple_error_msg("ERROR truncated");
			else
				errno = -err->error;
			return -1;


@@ 149,11 149,11 @@ static int rtnl_dump_filter(struct rtnl_handle *rth,
		if (status < 0) {
			if (errno == EINTR)
				continue;
			bb_perror_msg("OVERRUN");
			bb_simple_perror_msg("OVERRUN");
			continue;
		}
		if (status == 0) {
			bb_error_msg("EOF on netlink");
			bb_simple_error_msg("EOF on netlink");
			goto ret;
		}
		if (msg.msg_namelen != sizeof(nladdr)) {


@@ 184,10 184,10 @@ static int rtnl_dump_filter(struct rtnl_handle *rth,
			if (h->nlmsg_type == NLMSG_ERROR) {
				struct nlmsgerr *l_err = (struct nlmsgerr*)NLMSG_DATA(h);
				if (h->nlmsg_len < NLMSG_LENGTH(sizeof(struct nlmsgerr))) {
					bb_error_msg("ERROR truncated");
					bb_simple_error_msg("ERROR truncated");
				} else {
					errno = -l_err->error;
					bb_perror_msg("RTNETLINK answers");
					bb_simple_perror_msg("RTNETLINK answers");
				}
				goto ret;
			}


@@ 201,7 201,7 @@ static int rtnl_dump_filter(struct rtnl_handle *rth,
			h = NLMSG_NEXT(h, status);
		}
		if (msg.msg_flags & MSG_TRUNC) {
			bb_error_msg("message truncated");
			bb_simple_error_msg("message truncated");
			continue;
		}
		if (status) {


@@ 221,7 221,7 @@ int FAST_FUNC xrtnl_dump_filter(struct rtnl_handle *rth,
{
	int ret = rtnl_dump_filter(rth, filter, arg1/*, NULL, NULL*/);
	if (ret < 0)
		bb_error_msg_and_die("dump terminated");
		bb_simple_error_msg_and_die("dump terminated");
	return ret;
}



@@ 266,7 266,7 @@ int FAST_FUNC rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n,
	status = sendmsg(rtnl->fd, &msg, 0);

	if (status < 0) {
		bb_perror_msg("can't talk to rtnetlink");
		bb_simple_perror_msg("can't talk to rtnetlink");
		goto ret;
	}



@@ 280,11 280,11 @@ int FAST_FUNC rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n,
			if (errno == EINTR) {
				continue;
			}
			bb_perror_msg("OVERRUN");
			bb_simple_perror_msg("OVERRUN");
			continue;
		}
		if (status == 0) {
			bb_error_msg("EOF on netlink");
			bb_simple_error_msg("EOF on netlink");
			goto ret;
		}
		if (msg.msg_namelen != sizeof(nladdr)) {


@@ 297,7 297,7 @@ int FAST_FUNC rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n,

			if (l < 0 || len > status) {
				if (msg.msg_flags & MSG_TRUNC) {
					bb_error_msg("truncated message");
					bb_simple_error_msg("truncated message");
					goto ret;
				}
				bb_error_msg_and_die("malformed message: len=%d!", len);


@@ 320,7 320,7 @@ int FAST_FUNC rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n,
			if (h->nlmsg_type == NLMSG_ERROR) {
				struct nlmsgerr *err = (struct nlmsgerr*)NLMSG_DATA(h);
				if (l < (int)sizeof(struct nlmsgerr)) {
					bb_error_msg("ERROR truncated");
					bb_simple_error_msg("ERROR truncated");
				} else {
					errno = - err->error;
					if (errno == 0) {


@@ 329,7 329,7 @@ int FAST_FUNC rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n,
						}
						goto ret_0;
					}
					bb_perror_msg("RTNETLINK answers");
					bb_simple_perror_msg("RTNETLINK answers");
				}
				goto ret;
			}


@@ 338,13 338,13 @@ int FAST_FUNC rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n,
				goto ret_0;
			}

			bb_error_msg("unexpected reply!");
			bb_simple_error_msg("unexpected reply!");

			status -= NLMSG_ALIGN(len);
			h = (struct nlmsghdr*)((char*)h + NLMSG_ALIGN(len));
		}
		if (msg.msg_flags & MSG_TRUNC) {
			bb_error_msg("message truncated");
			bb_simple_error_msg("message truncated");
			continue;
		}
		if (status) {

M networking/libiproute/utils.c => networking/libiproute/utils.c +1 -1
@@ 230,7 230,7 @@ uint32_t FAST_FUNC get_addr32(char *name)
char** FAST_FUNC next_arg(char **argv)
{
	if (!*++argv)
		bb_error_msg_and_die("command line is not complete, try \"help\"");
		bb_simple_error_msg_and_die("command line is not complete, try \"help\"");
	return argv;
}


M networking/nbd-client.c => networking/nbd-client.c +5 -5
@@ 179,7 179,7 @@ int nbdclient_main(int argc, char **argv)
		if (memcmp(&nbd_header.magic1, "NBDMAGIC",
				sizeof(nbd_header.magic1)) != 0
		) {
			bb_error_msg_and_die("login failed");
			bb_simple_error_msg_and_die("login failed");
		}
		if (memcmp(&nbd_header.magic2,
				"\x00\x00\x42\x02\x81\x86\x12\x53",


@@ 189,7 189,7 @@ int nbdclient_main(int argc, char **argv)
		} else if (memcmp(&nbd_header.magic2, "IHAVEOPT", 8) == 0) {
			proto_new = 1;
		} else {
			bb_error_msg_and_die("login failed");
			bb_simple_error_msg_and_die("login failed");
		}

		if (!proto_new) {


@@ 240,17 240,17 @@ int nbdclient_main(int argc, char **argv)
		}

		if (ioctl(nbd, BLKROSET, &ro) < 0) {
			bb_perror_msg_and_die("BLKROSET");
			bb_simple_perror_msg_and_die("BLKROSET");
		}

		if (timeout) {
			if (ioctl(nbd, NBD_SET_TIMEOUT, (unsigned long) timeout)) {
				bb_perror_msg_and_die("NBD_SET_TIMEOUT");
				bb_simple_perror_msg_and_die("NBD_SET_TIMEOUT");
			}
		}

		if (ioctl(nbd, NBD_SET_SOCK, sock)) {
			bb_perror_msg_and_die("NBD_SET_SOCK");
			bb_simple_perror_msg_and_die("NBD_SET_SOCK");
		}

		//if (swap) mlockall(MCL_CURRENT|MCL_FUTURE);

M networking/nc.c => networking/nc.c +3 -3
@@ 112,7 112,7 @@

static void timeout(int signum UNUSED_PARAM)
{
	bb_error_msg_and_die("timed out");
	bb_simple_error_msg_and_die("timed out");
}

int nc_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;


@@ 211,7 211,7 @@ int nc_main(int argc, char **argv)
 accept_again:
			cfd = accept(sfd, NULL, 0);
			if (cfd < 0)
				bb_perror_msg_and_die("accept");
				bb_simple_perror_msg_and_die("accept");
			if (!execparam)
				close(sfd);
		} else {


@@ 260,7 260,7 @@ int nc_main(int argc, char **argv)
		int nread;

		if (safe_poll(pfds, 2, -1) < 0)
			bb_perror_msg_and_die("poll");
			bb_simple_perror_msg_and_die("poll");

		fdidx = 0;
		while (1) {

M networking/nc_bloaty.c => networking/nc_bloaty.c +9 -9
@@ 198,8 198,8 @@ enum {
#define Debug(...) do { } while (0)
#endif

#define holler_error(...)  do { if (o_verbose) bb_error_msg(__VA_ARGS__); } while (0)
#define holler_perror(...) do { if (o_verbose) bb_perror_msg(__VA_ARGS__); } while (0)
#define holler_error(msg)  do { if (o_verbose) bb_simple_error_msg(msg); } while (0)
#define holler_perror(msg) do { if (o_verbose) bb_simple_perror_msg(msg); } while (0)

/* catch: no-brainer interrupt handler */
static void catch(int sig)


@@ 361,10 361,10 @@ static void dolisten(int is_persistent, char **proggie)
			rr = recv_from_to(netfd, NULL, 0, MSG_PEEK, /*was bigbuf_net, BIGSIZ*/
				&remend.u.sa, &ouraddr->u.sa, ouraddr->len);
			if (rr < 0)
				bb_perror_msg_and_die("recvfrom");
				bb_simple_perror_msg_and_die("recvfrom");
			unarm();
		} else
			bb_error_msg_and_die("timeout");
			bb_simple_error_msg_and_die("timeout");