From f42c7b8fc161f5b3eb4e9c13f392daf7a11760c8 Mon Sep 17 00:00:00 2001
From: Denys Vlasenko <dvlasenk@redhat.com>
Date: Fri, 7 Jan 2011 13:51:16 +0100
Subject: suppress "'fast_strtol_10' defined but not used" warning

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
---
 libbb/procps.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

(limited to 'libbb')

diff --git a/libbb/procps.c b/libbb/procps.c
index f22a55d15..fb4c32001 100644
--- a/libbb/procps.c
+++ b/libbb/procps.c
@@ -154,6 +154,7 @@ static unsigned long fast_strtoul_10(char **endptr)
 	return n;
 }
 
+# if ENABLE_FEATURE_FAST_TOP
 static long fast_strtol_10(char **endptr)
 {
 	if (**endptr != '-')
@@ -162,6 +163,7 @@ static long fast_strtol_10(char **endptr)
 	(*endptr)++;
 	return - (long)fast_strtoul_10(endptr);
 }
+# endif
 
 static char *skip_fields(char *str, int count)
 {
@@ -450,7 +452,7 @@ procps_status_t* FAST_FUNC procps_scan(procps_status_t* sp, int flags)
 //FIXME: is it safe to assume this field exists?
 			sp->last_seen_on_cpu = fast_strtoul_10(&cp);
 # endif
-#endif /* end of !ENABLE_FEATURE_TOP_SMP_PROCESS */
+#endif /* FEATURE_FAST_TOP */
 
 #if ENABLE_FEATURE_PS_ADDITIONAL_COLUMNS
 			sp->niceness = tasknice;
-- 
cgit v1.2.3-55-g6feb


From 84dba9c5bbd99cb80c0e201bbffa27a51766c63f Mon Sep 17 00:00:00 2001
From: Denys Vlasenko <dvlasenk@redhat.com>
Date: Mon, 10 Jan 2011 12:51:44 +0100
Subject: tftp: fix bad interaction betweel poll() and alarm(). Closes bug 3061

This was breaking timeout handling.

function                                             old     new   delta
tftp_progress_update                                   -      45     +45
tftp_progress_done                                     -      32     +32
tftp_protocol                                       1839    1858     +19
tftp_progress_init                                     9      15      +6
tftp_main                                            298     286     -12
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 2/1 up/down: 102/-12)            Total: 90 bytes

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
---
 libbb/progress.c  |  2 +-
 networking/tftp.c | 39 ++++++++++++---------------------------
 2 files changed, 13 insertions(+), 28 deletions(-)

(limited to 'libbb')

diff --git a/libbb/progress.c b/libbb/progress.c
index 4c2763c53..74e80a39e 100644
--- a/libbb/progress.c
+++ b/libbb/progress.c
@@ -78,7 +78,7 @@ void FAST_FUNC bb_progress_update(bb_progress_t *p,
 	/* Do not update on every call
 	 * (we can be called on every network read!) */
 	if (since_last_update == 0 && !totalsize)
-			return;
+		return;
 
 	beg_and_transferred = beg_range + transferred;
 	ratio = 100;
diff --git a/networking/tftp.c b/networking/tftp.c
index 04c8f0ebb..fcd933f6a 100644
--- a/networking/tftp.c
+++ b/networking/tftp.c
@@ -105,39 +105,22 @@ struct BUG_G_too_big {
 #define error_pkt_str    (error_pkt + 4)
 
 #if ENABLE_FEATURE_TFTP_PROGRESS_BAR
-/* SIGALRM logic nicked from the wget applet */
-static void progress_meter(int flag)
+static void tftp_progress_update(void)
 {
-	/* We can be called from signal handler */
-	int save_errno = errno;
-
-	if (flag == -1) { /* first call to progress_meter */
-		bb_progress_init(&G.pmt);
-	}
-
 	bb_progress_update(&G.pmt, G.file, 0, G.pos, G.size);
-
-	if (flag == 0) {
-		/* last call to progress_meter */
-		alarm(0);
-		bb_putchar_stderr('\n');
-	} else {
-		if (flag == -1) { /* first call to progress_meter */
-			signal_SA_RESTART_empty_mask(SIGALRM, progress_meter);
-		}
-		alarm(1);
-	}
-
-	errno = save_errno;
 }
 static void tftp_progress_init(void)
 {
-	progress_meter(-1);
+	bb_progress_init(&G.pmt);
+	tftp_progress_update();
 }
 static void tftp_progress_done(void)
 {
-	if (G.pmt.inited)
-		progress_meter(0);
+	if (G.pmt.inited) {
+		tftp_progress_update();
+		bb_putchar_stderr('\n');
+		G.pmt.inited = 0;
+	}
 }
 #else
 # define tftp_progress_init() ((void)0)
@@ -460,9 +443,10 @@ static int tftp_protocol(
 		xsendto(socket_fd, xbuf, send_len, &peer_lsa->u.sa, peer_lsa->len);
 
 #if ENABLE_FEATURE_TFTP_PROGRESS_BAR
-		if (ENABLE_TFTP && remote_file) { /* tftp */
+		if (ENABLE_TFTP && remote_file) /* tftp */
 			G.pos = (block_nr - 1) * (uoff_t)blksize;
-		}
+		if (G.pmt.inited)
+			tftp_progress_update();
 #endif
 		/* Was it final ACK? then exit */
 		if (finished && (opcode == TFTP_ACK))
@@ -479,6 +463,7 @@ static int tftp_protocol(
 		case 0:
 			retries--;
 			if (retries == 0) {
+				tftp_progress_done();
 				bb_error_msg("timeout");
 				goto ret; /* no err packet sent */
 			}
-- 
cgit v1.2.3-55-g6feb


From 0f44c08560a5287fb927c15a3cce54302a0b80e5 Mon Sep 17 00:00:00 2001
From: Denys Vlasenko <dvlasenk@redhat.com>
Date: Mon, 10 Jan 2011 16:10:29 +0100
Subject: libbb: progress indicator: use unicode support funcs instead of
 open-coding it

function                                             old     new   delta
bb_progress_update                                   729     641     -88

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
---
 libbb/progress.c | 20 ++++----------------
 1 file changed, 4 insertions(+), 16 deletions(-)

(limited to 'libbb')

diff --git a/libbb/progress.c b/libbb/progress.c
index 74e80a39e..3c7355fee 100644
--- a/libbb/progress.c
+++ b/libbb/progress.c
@@ -93,22 +93,9 @@ void FAST_FUNC bb_progress_update(bb_progress_t *p,
 
 #if ENABLE_UNICODE_SUPPORT
 	init_unicode();
-	/* libbb candidate? */
 	{
-		wchar_t wbuf21[21];
-		char *buf = xstrdup(curfile);
-		unsigned len;
-
-		/* trim to 20 wide chars max (sets wbuf21[20] to 0)
-		 * also, in case mbstowcs fails, we at least
-		 * dont get garbage */
-		memset(wbuf21, 0, sizeof(wbuf21));
-		/* convert to wide chars, no more than 20 */
-		len = mbstowcs(wbuf21, curfile, 20); /* NB: may return -1 */
-		/* back to multibyte; cant overflow */
-		wcstombs(buf, wbuf21, INT_MAX);
-		len = (len > 20) ? 0 : 20 - len;
-		fprintf(stderr, "\r%s%*s%4u%% ", buf, len, "", ratio);
+		char *buf = unicode_conv_to_printable_fixedwidth(NULL, curfile, 20);
+		fprintf(stderr, "\r%s%4u%% ", buf, ratio);
 		free(buf);
 	}
 #else
@@ -158,7 +145,8 @@ void FAST_FUNC bb_progress_update(bb_progress_t *p,
 			/* (long long helps to have working ETA even if !LFS) */
 			unsigned eta = (unsigned long long)to_download*elapsed/(uoff_t)transferred - elapsed;
 			unsigned secs = eta % 3600;
-			fprintf(stderr, "%02u:%02u:%02u ETA", eta / 3600, secs / 60, secs % 60);
+			unsigned hours = eta / 3600;
+			fprintf(stderr, "%02u:%02u:%02u ETA", hours, secs / 60, secs % 60);
 		}
 	}
 }
-- 
cgit v1.2.3-55-g6feb


From dc7e5c46b0204bc3489ee961a631fb00533ae597 Mon Sep 17 00:00:00 2001
From: Denys Vlasenko <dvlasenk@redhat.com>
Date: Tue, 11 Jan 2011 13:08:28 +0100
Subject: libbb unicode: comment out usused function and unused parameter

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
---
 coreutils/cal.c               |  2 +-
 include/unicode.h             |  4 ++--
 libbb/progress.c              |  2 +-
 libbb/unicode.c               | 11 ++++++-----
 networking/udhcp/dumpleases.c |  2 +-
 5 files changed, 11 insertions(+), 10 deletions(-)

(limited to 'libbb')

diff --git a/coreutils/cal.c b/coreutils/cal.c
index ef5dbeadb..f18c16120 100644
--- a/coreutils/cal.c
+++ b/coreutils/cal.c
@@ -138,7 +138,7 @@ int cal_main(int argc UNUSED_PARAM, char **argv)
 			if (julian)
 				*hp++ = ' ';
 			{
-				char *two_wchars = unicode_conv_to_printable_fixedwidth(NULL, buf, 2);
+				char *two_wchars = unicode_conv_to_printable_fixedwidth(/*NULL,*/ buf, 2);
 				strcpy(hp, two_wchars);
 				free(two_wchars);
 			}
diff --git a/include/unicode.h b/include/unicode.h
index 1dd55e67d..dee02e777 100644
--- a/include/unicode.h
+++ b/include/unicode.h
@@ -60,8 +60,8 @@ enum {
 //UNUSED: unsigned FAST_FUNC unicode_padding_to_width(unsigned width, const char *src);
 //UNUSED: char* FAST_FUNC unicode_conv_to_printable2(uni_stat_t *stats, const char *src, unsigned width, int flags);
 char* FAST_FUNC unicode_conv_to_printable(uni_stat_t *stats, const char *src);
-char* FAST_FUNC unicode_conv_to_printable_maxwidth(uni_stat_t *stats, const char *src, unsigned maxwidth);
-char* FAST_FUNC unicode_conv_to_printable_fixedwidth(uni_stat_t *stats, const char *src, unsigned width);
+//UNUSED: char* FAST_FUNC unicode_conv_to_printable_maxwidth(uni_stat_t *stats, const char *src, unsigned maxwidth);
+char* FAST_FUNC unicode_conv_to_printable_fixedwidth(/*uni_stat_t *stats,*/ const char *src, unsigned width);
 
 # if ENABLE_UNICODE_USING_LOCALE
 
diff --git a/libbb/progress.c b/libbb/progress.c
index 3c7355fee..40608b047 100644
--- a/libbb/progress.c
+++ b/libbb/progress.c
@@ -94,7 +94,7 @@ void FAST_FUNC bb_progress_update(bb_progress_t *p,
 #if ENABLE_UNICODE_SUPPORT
 	init_unicode();
 	{
-		char *buf = unicode_conv_to_printable_fixedwidth(NULL, curfile, 20);
+		char *buf = unicode_conv_to_printable_fixedwidth(/*NULL,*/ curfile, 20);
 		fprintf(stderr, "\r%s%4u%% ", buf, ratio);
 		free(buf);
 	}
diff --git a/libbb/unicode.c b/libbb/unicode.c
index cf0c6bed9..08a4c7427 100644
--- a/libbb/unicode.c
+++ b/libbb/unicode.c
@@ -1107,16 +1107,17 @@ char* FAST_FUNC unicode_conv_to_printable(uni_stat_t *stats, const char *src)
 {
 	return unicode_conv_to_printable2(stats, src, INT_MAX, 0);
 }
-char* FAST_FUNC unicode_conv_to_printable_maxwidth(uni_stat_t *stats, const char *src, unsigned maxwidth)
+char* FAST_FUNC unicode_conv_to_printable_fixedwidth(/*uni_stat_t *stats,*/ const char *src, unsigned width)
 {
-	return unicode_conv_to_printable2(stats, src, maxwidth, 0);
+	return unicode_conv_to_printable2(/*stats:*/ NULL, src, width, UNI_FLAG_PAD);
 }
-char* FAST_FUNC unicode_conv_to_printable_fixedwidth(uni_stat_t *stats, const char *src, unsigned width)
+
+#ifdef UNUSED
+char* FAST_FUNC unicode_conv_to_printable_maxwidth(uni_stat_t *stats, const char *src, unsigned maxwidth)
 {
-	return unicode_conv_to_printable2(stats, src, width, UNI_FLAG_PAD);
+	return unicode_conv_to_printable2(stats, src, maxwidth, 0);
 }
 
-#ifdef UNUSED
 unsigned FAST_FUNC unicode_padding_to_width(unsigned width, const char *src)
 {
 	if (unicode_status != UNICODE_ON) {
diff --git a/networking/udhcp/dumpleases.c b/networking/udhcp/dumpleases.c
index a15e409cc..21d62a2d2 100644
--- a/networking/udhcp/dumpleases.c
+++ b/networking/udhcp/dumpleases.c
@@ -57,7 +57,7 @@ int dumpleases_main(int argc UNUSED_PARAM, char **argv)
 		addr.s_addr = lease.lease_nip;
 #if ENABLE_UNICODE_SUPPORT
 		{
-			char *uni_name = unicode_conv_to_printable_fixedwidth(NULL, lease.hostname, 19);
+			char *uni_name = unicode_conv_to_printable_fixedwidth(/*NULL,*/ lease.hostname, 19);
 			printf(" %-16s%s ", inet_ntoa(addr), uni_name);
 			free(uni_name);
 		}
-- 
cgit v1.2.3-55-g6feb


From 10ee20b58b77bdfb941480fdf4b95347c2b2ea79 Mon Sep 17 00:00:00 2001
From: Denys Vlasenko <vda.linux@googlemail.com>
Date: Mon, 17 Jan 2011 14:23:42 +0100
Subject: libbb: better comment in parse_date

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
 libbb/time.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

(limited to 'libbb')

diff --git a/libbb/time.c b/libbb/time.c
index 1eb2d75c2..e2b938471 100644
--- a/libbb/time.c
+++ b/libbb/time.c
@@ -91,7 +91,13 @@ void FAST_FUNC parse_datestr(const char *date_str, struct tm *ptm)
 		 * .SS  Seconds, a number from 0 to 61 (with leap seconds)
 		 * Everything but the minutes is optional
 		 *
-		 * This coincides with the format of "touch -t TIME"
+		 * "touch -t DATETIME" format: [[[[[YY]YY]MM]DD]hh]mm[.ss]
+		 * Some, but not all, Unix "date DATETIME" commands
+		 * move [[YY]YY] past minutes mm field (!).
+		 * Coreutils date does it, and SUS mandates it.
+		 * (date -s DATETIME does not support this format. lovely!)
+		 * In bbox, this format is special-cased in date applet
+		 * (IOW: this function assumes "touch -t" format).
 		 */
 		unsigned cur_year = ptm->tm_year;
 		int len = strchrnul(date_str, '.') - date_str;
-- 
cgit v1.2.3-55-g6feb


From b9f2d9f7d9b4a9b6fbb6a28a8c0bcf8e0e3b1704 Mon Sep 17 00:00:00 2001
From: Denys Vlasenko <vda.linux@googlemail.com>
Date: Tue, 18 Jan 2011 13:58:01 +0100
Subject: mass removal of underscores from _BB_DIR_foo and _BB_SUID_foo

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
 archival/bbunzip.c            |   4 +-
 coreutils/date.c              |   2 +-
 coreutils/touch.c             |   2 +-
 coreutils/uudecode.c          |   2 +-
 docs/new-applet-HOWTO.txt     |   2 +-
 editors/patch.c               |   2 +-
 findutils/find.c              |   2 +-
 findutils/grep.c              |   6 +-
 findutils/xargs.c             |   2 +-
 include/applets.src.h         | 678 +++++++++++++++++++++---------------------
 include/busybox.h             |  20 +-
 init/bootchartd.c             |   2 +-
 init/halt.c                   |   6 +-
 init/init.c                   |   4 +-
 init/mesg.c                   |   2 +-
 libbb/appletlib.c             |   4 +-
 loginutils/add-remove-shell.c |   4 +-
 miscutils/conspy.c            |   2 +-
 miscutils/nandwrite.c         |   4 +-
 miscutils/ubi_attach_detach.c |   4 +-
 modutils/depmod.c             |   2 +-
 modutils/insmod.c             |   2 +-
 modutils/lsmod.c              |   2 +-
 modutils/modinfo.c            |   2 +-
 modutils/modprobe-small.c     |  10 +-
 modutils/modprobe.c           |   2 +-
 modutils/rmmod.c              |   2 +-
 networking/nbd-client.c       |   2 +-
 networking/ping.c             |   6 +-
 procps/iostat.c               |   2 +-
 procps/mpstat.c               |   2 +-
 procps/nmeter.c               |   2 +-
 procps/pmap.c                 |   2 +-
 procps/powertop.c             |   2 +-
 procps/pstree.c               |   2 +-
 procps/smemcap.c              |   2 +-
 shell/ash.c                   |   6 +-
 shell/cttyhack.c              |   2 +-
 shell/hush.c                  |   8 +-
 util-linux/blockdev.c         |   2 +-
 util-linux/rev.c              |   2 +-
 41 files changed, 409 insertions(+), 409 deletions(-)

(limited to 'libbb')

diff --git a/archival/bbunzip.c b/archival/bbunzip.c
index a69e1b3ca..c4cc5d821 100644
--- a/archival/bbunzip.c
+++ b/archival/bbunzip.c
@@ -315,8 +315,8 @@ int gunzip_main(int argc UNUSED_PARAM, char **argv)
 //usage:       "FILE"
 //usage:#define bzcat_full_usage "\n\n"
 //usage:       "Decompress to stdout"
-//applet:IF_BUNZIP2(APPLET(bunzip2, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-//applet:IF_BUNZIP2(APPLET_ODDNAME(bzcat, bunzip2, _BB_DIR_USR_BIN, _BB_SUID_DROP, bzcat))
+//applet:IF_BUNZIP2(APPLET(bunzip2, BB_DIR_USR_BIN, BB_SUID_DROP))
+//applet:IF_BUNZIP2(APPLET_ODDNAME(bzcat, bunzip2, BB_DIR_USR_BIN, BB_SUID_DROP, bzcat))
 #if ENABLE_BUNZIP2
 static
 IF_DESKTOP(long long) int FAST_FUNC unpack_bunzip2(unpack_info_t *info UNUSED_PARAM)
diff --git a/coreutils/date.c b/coreutils/date.c
index 6ad5f1bb6..05b4f6eed 100644
--- a/coreutils/date.c
+++ b/coreutils/date.c
@@ -19,7 +19,7 @@
 /* Input parsing code is always bulky - used heavy duty libc stuff as
    much as possible, missed out a lot of bounds checking */
 
-//applet:IF_DATE(APPLET(date, _BB_DIR_BIN, _BB_SUID_DROP))
+//applet:IF_DATE(APPLET(date, BB_DIR_BIN, BB_SUID_DROP))
 
 //kbuild:lib-$(CONFIG_DATE) += date.o
 
diff --git a/coreutils/touch.c b/coreutils/touch.c
index 6c2b948e6..c51fb70ca 100644
--- a/coreutils/touch.c
+++ b/coreutils/touch.c
@@ -26,7 +26,7 @@
 //config:	  touch is used to create or change the access and/or
 //config:	  modification timestamp of specified files.
 
-//applet:IF_TOUCH(APPLET_NOFORK(touch, touch, _BB_DIR_BIN, _BB_SUID_DROP, touch))
+//applet:IF_TOUCH(APPLET_NOFORK(touch, touch, BB_DIR_BIN, BB_SUID_DROP, touch))
 
 //kbuild:lib-$(CONFIG_TOUCH) += touch.o
 
diff --git a/coreutils/uudecode.c b/coreutils/uudecode.c
index 0c4311f24..56ed254e5 100644
--- a/coreutils/uudecode.c
+++ b/coreutils/uudecode.c
@@ -132,7 +132,7 @@ int uudecode_main(int argc UNUSED_PARAM, char **argv)
 }
 #endif
 
-//applet:IF_BASE64(APPLET(base64, _BB_DIR_BIN, _BB_SUID_DROP))
+//applet:IF_BASE64(APPLET(base64, BB_DIR_BIN, BB_SUID_DROP))
 
 //kbuild:lib-$(CONFIG_BASE64) += uudecode.o
 
diff --git a/docs/new-applet-HOWTO.txt b/docs/new-applet-HOWTO.txt
index bb29999cf..6a8054d0e 100644
--- a/docs/new-applet-HOWTO.txt
+++ b/docs/new-applet-HOWTO.txt
@@ -161,7 +161,7 @@ algorithm in busybox.c and the Gods of BusyBox smite you. Yea, verily:
 Be sure to read the top of applets.src.h before adding your applet.
 
 	/* all programs above here are alphabetically "less than" 'mu' */
-	IF_MU(APPLET(mu, _BB_DIR_USR_BIN, _BB_SUID_DROP))
+	IF_MU(APPLET(mu, BB_DIR_USR_BIN, BB_SUID_DROP))
 	/* all programs below here are alphabetically "greater than" 'mu' */
 
 
diff --git a/editors/patch.c b/editors/patch.c
index 9c6d967b9..a90252a03 100644
--- a/editors/patch.c
+++ b/editors/patch.c
@@ -21,7 +21,7 @@
  * [file] which file to patch
  */
 
-//applet:IF_PATCH(APPLET(patch, _BB_DIR_USR_BIN, _BB_SUID_DROP))
+//applet:IF_PATCH(APPLET(patch, BB_DIR_USR_BIN, BB_SUID_DROP))
 
 //kbuild:lib-$(CONFIG_PATCH) += patch.o
 
diff --git a/findutils/find.c b/findutils/find.c
index dd00f37ea..f85381b47 100644
--- a/findutils/find.c
+++ b/findutils/find.c
@@ -53,7 +53,7 @@
  * diff -u /tmp/std_find /tmp/bb_find && echo Identical
  */
 
-//applet:IF_FIND(APPLET_NOEXEC(find, find, _BB_DIR_USR_BIN, _BB_SUID_DROP, find))
+//applet:IF_FIND(APPLET_NOEXEC(find, find, BB_DIR_USR_BIN, BB_SUID_DROP, find))
 
 //kbuild:lib-$(CONFIG_FIND) += find.o
 
diff --git a/findutils/grep.c b/findutils/grep.c
index ff6742a69..e7116e4c9 100644
--- a/findutils/grep.c
+++ b/findutils/grep.c
@@ -18,9 +18,9 @@
  * (C) 2006 Jac Goudsmit added -o option
  */
 
-//applet:IF_GREP(APPLET(grep, _BB_DIR_BIN, _BB_SUID_DROP))
-//applet:IF_FEATURE_GREP_EGREP_ALIAS(APPLET_ODDNAME(egrep, grep, _BB_DIR_BIN, _BB_SUID_DROP, egrep))
-//applet:IF_FEATURE_GREP_FGREP_ALIAS(APPLET_ODDNAME(fgrep, grep, _BB_DIR_BIN, _BB_SUID_DROP, fgrep))
+//applet:IF_GREP(APPLET(grep, BB_DIR_BIN, BB_SUID_DROP))
+//applet:IF_FEATURE_GREP_EGREP_ALIAS(APPLET_ODDNAME(egrep, grep, BB_DIR_BIN, BB_SUID_DROP, egrep))
+//applet:IF_FEATURE_GREP_FGREP_ALIAS(APPLET_ODDNAME(fgrep, grep, BB_DIR_BIN, BB_SUID_DROP, fgrep))
 
 //kbuild:lib-$(CONFIG_GREP) += grep.o
 
diff --git a/findutils/xargs.c b/findutils/xargs.c
index d73fad9de..0ec80f809 100644
--- a/findutils/xargs.c
+++ b/findutils/xargs.c
@@ -15,7 +15,7 @@
  * http://www.opengroup.org/onlinepubs/007904975/utilities/xargs.html
  */
 
-//applet:IF_XARGS(APPLET_NOEXEC(xargs, xargs, _BB_DIR_USR_BIN, _BB_SUID_DROP, xargs))
+//applet:IF_XARGS(APPLET_NOEXEC(xargs, xargs, BB_DIR_USR_BIN, BB_SUID_DROP, xargs))
 
 //kbuild:lib-$(CONFIG_XARGS) += xargs.o
 
diff --git a/include/applets.src.h b/include/applets.src.h
index 2481fe67f..fa7d0cc55 100644
--- a/include/applets.src.h
+++ b/include/applets.src.h
@@ -12,14 +12,14 @@ name2 - applet name, converted to C (ether-wake: name2 = ether_wake)
 main  - corresponding <applet>_main to call (bzcat: main = bunzip2)
 l     - location to install link to: [/usr]/[s]bin
 s     - suid type:
-        _BB_SUID_REQUIRE: will complain if busybox isn't suid
+        BB_SUID_REQUIRE: will complain if busybox isn't suid
         and is run by non-root (applet_main() will not be called at all)
-        _BB_SUID_DROP: will drop suid prior to applet_main()
-        _BB_SUID_MAYBE: neither of the above
-        (every instance of _BB_SUID_REQUIRE and _BB_SUID_MAYBE
+        BB_SUID_DROP: will drop suid prior to applet_main()
+        BB_SUID_MAYBE: neither of the above
+        (every instance of BB_SUID_REQUIRE and BB_SUID_MAYBE
         needs to be justified in comment)
         NB: please update FEATURE_SUID help text whenever you add/remove
-        _BB_SUID_REQUIRE or _BB_SUID_MAYBE applet.
+        BB_SUID_REQUIRE or BB_SUID_MAYBE applet.
 */
 
 #if defined(PROTOTYPES)
@@ -61,363 +61,363 @@ s     - suid type:
 #endif
 
 #if ENABLE_INSTALL_NO_USR
-# define _BB_DIR_USR_BIN _BB_DIR_BIN
-# define _BB_DIR_USR_SBIN _BB_DIR_SBIN
+# define BB_DIR_USR_BIN BB_DIR_BIN
+# define BB_DIR_USR_SBIN BB_DIR_SBIN
 #endif
 
 
 INSERT
-IF_TEST(APPLET_NOFORK([,  test, _BB_DIR_USR_BIN, _BB_SUID_DROP, test))
-IF_TEST(APPLET_NOFORK([[, test, _BB_DIR_USR_BIN, _BB_SUID_DROP, test))
-IF_ACPID(APPLET(acpid, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_ADDGROUP(APPLET(addgroup, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_ADDUSER(APPLET(adduser, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_ADJTIMEX(APPLET(adjtimex, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_AR(APPLET(ar, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_ARP(APPLET(arp, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_ARPING(APPLET(arping, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_AWK(APPLET_NOEXEC(awk, awk, _BB_DIR_USR_BIN, _BB_SUID_DROP, awk))
-IF_BASENAME(APPLET_NOFORK(basename, basename, _BB_DIR_USR_BIN, _BB_SUID_DROP, basename))
-IF_BBCONFIG(APPLET(bbconfig, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_BEEP(APPLET(beep, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_BLKID(APPLET(blkid, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_BRCTL(APPLET(brctl, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_BZIP2(APPLET(bzip2, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_CAL(APPLET(cal, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_CAT(APPLET_NOFORK(cat, cat, _BB_DIR_BIN, _BB_SUID_DROP, cat))
-IF_CATV(APPLET(catv, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_CHAT(APPLET(chat, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_CHATTR(APPLET(chattr, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_CHCON(APPLET(chcon, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_CHGRP(APPLET_NOEXEC(chgrp, chgrp, _BB_DIR_BIN, _BB_SUID_DROP, chgrp))
-IF_CHMOD(APPLET_NOEXEC(chmod, chmod, _BB_DIR_BIN, _BB_SUID_DROP, chmod))
-IF_CHOWN(APPLET_NOEXEC(chown, chown, _BB_DIR_BIN, _BB_SUID_DROP, chown))
-IF_CHPASSWD(APPLET(chpasswd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_CHPST(APPLET(chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_CHROOT(APPLET(chroot, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_CHRT(APPLET(chrt, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_CHVT(APPLET(chvt, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_CKSUM(APPLET_NOEXEC(cksum, cksum, _BB_DIR_USR_BIN, _BB_SUID_DROP, cksum))
-IF_CLEAR(APPLET(clear, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_CMP(APPLET(cmp, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_COMM(APPLET(comm, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_CP(APPLET_NOEXEC(cp, cp, _BB_DIR_BIN, _BB_SUID_DROP, cp))
-IF_CPIO(APPLET(cpio, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_CROND(APPLET(crond, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
+IF_TEST(APPLET_NOFORK([,  test, BB_DIR_USR_BIN, BB_SUID_DROP, test))
+IF_TEST(APPLET_NOFORK([[, test, BB_DIR_USR_BIN, BB_SUID_DROP, test))
+IF_ACPID(APPLET(acpid, BB_DIR_SBIN, BB_SUID_DROP))
+IF_ADDGROUP(APPLET(addgroup, BB_DIR_BIN, BB_SUID_DROP))
+IF_ADDUSER(APPLET(adduser, BB_DIR_BIN, BB_SUID_DROP))
+IF_ADJTIMEX(APPLET(adjtimex, BB_DIR_SBIN, BB_SUID_DROP))
+IF_AR(APPLET(ar, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_ARP(APPLET(arp, BB_DIR_SBIN, BB_SUID_DROP))
+IF_ARPING(APPLET(arping, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_AWK(APPLET_NOEXEC(awk, awk, BB_DIR_USR_BIN, BB_SUID_DROP, awk))
+IF_BASENAME(APPLET_NOFORK(basename, basename, BB_DIR_USR_BIN, BB_SUID_DROP, basename))
+IF_BBCONFIG(APPLET(bbconfig, BB_DIR_BIN, BB_SUID_DROP))
+IF_BEEP(APPLET(beep, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_BLKID(APPLET(blkid, BB_DIR_SBIN, BB_SUID_DROP))
+IF_BRCTL(APPLET(brctl, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_BZIP2(APPLET(bzip2, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_CAL(APPLET(cal, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_CAT(APPLET_NOFORK(cat, cat, BB_DIR_BIN, BB_SUID_DROP, cat))
+IF_CATV(APPLET(catv, BB_DIR_BIN, BB_SUID_DROP))
+IF_CHAT(APPLET(chat, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_CHATTR(APPLET(chattr, BB_DIR_BIN, BB_SUID_DROP))
+IF_CHCON(APPLET(chcon, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_CHGRP(APPLET_NOEXEC(chgrp, chgrp, BB_DIR_BIN, BB_SUID_DROP, chgrp))
+IF_CHMOD(APPLET_NOEXEC(chmod, chmod, BB_DIR_BIN, BB_SUID_DROP, chmod))
+IF_CHOWN(APPLET_NOEXEC(chown, chown, BB_DIR_BIN, BB_SUID_DROP, chown))
+IF_CHPASSWD(APPLET(chpasswd, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_CHPST(APPLET(chpst, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_CHROOT(APPLET(chroot, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_CHRT(APPLET(chrt, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_CHVT(APPLET(chvt, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_CKSUM(APPLET_NOEXEC(cksum, cksum, BB_DIR_USR_BIN, BB_SUID_DROP, cksum))
+IF_CLEAR(APPLET(clear, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_CMP(APPLET(cmp, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_COMM(APPLET(comm, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_CP(APPLET_NOEXEC(cp, cp, BB_DIR_BIN, BB_SUID_DROP, cp))
+IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP))
+IF_CROND(APPLET(crond, BB_DIR_USR_SBIN, BB_SUID_DROP))
 /* Needs to be run by root or be suid root - needs to change /var/spool/cron* files: */
-IF_CRONTAB(APPLET(crontab, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE))
-IF_CRYPTPW(APPLET(cryptpw, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_CUT(APPLET_NOEXEC(cut, cut, _BB_DIR_USR_BIN, _BB_SUID_DROP, cut))
-IF_DC(APPLET(dc, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_DD(APPLET_NOEXEC(dd, dd, _BB_DIR_BIN, _BB_SUID_DROP, dd))
-IF_DEALLOCVT(APPLET(deallocvt, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_DELGROUP(APPLET_ODDNAME(delgroup, deluser, _BB_DIR_BIN, _BB_SUID_DROP, delgroup))
-IF_DELUSER(APPLET(deluser, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_DEVFSD(APPLET(devfsd, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_DEVMEM(APPLET(devmem, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_DF(APPLET(df, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_DHCPRELAY(APPLET(dhcprelay, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_DIFF(APPLET(diff, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_DIRNAME(APPLET_NOFORK(dirname, dirname, _BB_DIR_USR_BIN, _BB_SUID_DROP, dirname))
-IF_DMESG(APPLET(dmesg, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_DNSD(APPLET(dnsd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_HOSTNAME(APPLET_ODDNAME(dnsdomainname, hostname, _BB_DIR_BIN, _BB_SUID_DROP, dnsdomainname))
-IF_DOS2UNIX(APPLET_NOEXEC(dos2unix, dos2unix, _BB_DIR_USR_BIN, _BB_SUID_DROP, dos2unix))
-IF_DPKG(APPLET(dpkg, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_DPKG_DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, _BB_DIR_USR_BIN, _BB_SUID_DROP, dpkg_deb))
-IF_DU(APPLET(du, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_DUMPKMAP(APPLET(dumpkmap, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_DUMPLEASES(APPLET(dumpleases, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-//IF_E2FSCK(APPLET(e2fsck, _BB_DIR_SBIN, _BB_SUID_DROP))
-//IF_E2LABEL(APPLET_ODDNAME(e2label, tune2fs, _BB_DIR_SBIN, _BB_SUID_DROP, e2label))
-IF_ECHO(APPLET_NOFORK(echo, echo, _BB_DIR_BIN, _BB_SUID_DROP, echo))
-IF_ED(APPLET(ed, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_EJECT(APPLET(eject, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_ENV(APPLET_NOEXEC(env, env, _BB_DIR_USR_BIN, _BB_SUID_DROP, env))
-IF_ENVDIR(APPLET_ODDNAME(envdir, chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP, envdir))
-IF_ENVUIDGID(APPLET_ODDNAME(envuidgid, chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP, envuidgid))
-IF_ETHER_WAKE(APPLET_ODDNAME(ether-wake, ether_wake, _BB_DIR_USR_BIN, _BB_SUID_DROP, ether_wake))
-IF_EXPAND(APPLET(expand, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_EXPR(APPLET(expr, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_FAKEIDENTD(APPLET(fakeidentd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_FALSE(APPLET_NOFORK(false, false, _BB_DIR_BIN, _BB_SUID_DROP, false))
-IF_FBSET(APPLET(fbset, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_FBSPLASH(APPLET(fbsplash, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_FDFLUSH(APPLET_ODDNAME(fdflush, freeramdisk, _BB_DIR_BIN, _BB_SUID_DROP, fdflush))
-IF_FDFORMAT(APPLET(fdformat, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_FDISK(APPLET(fdisk, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_FGCONSOLE(APPLET(fgconsole, _BB_DIR_USR_BIN, _BB_SUID_DROP))
+IF_CRONTAB(APPLET(crontab, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
+IF_CRYPTPW(APPLET(cryptpw, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_CUT(APPLET_NOEXEC(cut, cut, BB_DIR_USR_BIN, BB_SUID_DROP, cut))
+IF_DC(APPLET(dc, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_DD(APPLET_NOEXEC(dd, dd, BB_DIR_BIN, BB_SUID_DROP, dd))
+IF_DEALLOCVT(APPLET(deallocvt, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_DELGROUP(APPLET_ODDNAME(delgroup, deluser, BB_DIR_BIN, BB_SUID_DROP, delgroup))
+IF_DELUSER(APPLET(deluser, BB_DIR_BIN, BB_SUID_DROP))
+IF_DEVFSD(APPLET(devfsd, BB_DIR_SBIN, BB_SUID_DROP))
+IF_DEVMEM(APPLET(devmem, BB_DIR_SBIN, BB_SUID_DROP))
+IF_DF(APPLET(df, BB_DIR_BIN, BB_SUID_DROP))
+IF_DHCPRELAY(APPLET(dhcprelay, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_DIFF(APPLET(diff, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_DIRNAME(APPLET_NOFORK(dirname, dirname, BB_DIR_USR_BIN, BB_SUID_DROP, dirname))
+IF_DMESG(APPLET(dmesg, BB_DIR_BIN, BB_SUID_DROP))
+IF_DNSD(APPLET(dnsd, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_HOSTNAME(APPLET_ODDNAME(dnsdomainname, hostname, BB_DIR_BIN, BB_SUID_DROP, dnsdomainname))
+IF_DOS2UNIX(APPLET_NOEXEC(dos2unix, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, dos2unix))
+IF_DPKG(APPLET(dpkg, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_DPKG_DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, BB_DIR_USR_BIN, BB_SUID_DROP, dpkg_deb))
+IF_DU(APPLET(du, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_DUMPKMAP(APPLET(dumpkmap, BB_DIR_BIN, BB_SUID_DROP))
+IF_DUMPLEASES(APPLET(dumpleases, BB_DIR_USR_BIN, BB_SUID_DROP))
+//IF_E2FSCK(APPLET(e2fsck, BB_DIR_SBIN, BB_SUID_DROP))
+//IF_E2LABEL(APPLET_ODDNAME(e2label, tune2fs, BB_DIR_SBIN, BB_SUID_DROP, e2label))
+IF_ECHO(APPLET_NOFORK(echo, echo, BB_DIR_BIN, BB_SUID_DROP, echo))
+IF_ED(APPLET(ed, BB_DIR_BIN, BB_SUID_DROP))
+IF_EJECT(APPLET(eject, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_ENV(APPLET_NOEXEC(env, env, BB_DIR_USR_BIN, BB_SUID_DROP, env))
+IF_ENVDIR(APPLET_ODDNAME(envdir, chpst, BB_DIR_USR_BIN, BB_SUID_DROP, envdir))
+IF_ENVUIDGID(APPLET_ODDNAME(envuidgid, chpst, BB_DIR_USR_BIN, BB_SUID_DROP, envuidgid))
+IF_ETHER_WAKE(APPLET_ODDNAME(ether-wake, ether_wake, BB_DIR_USR_BIN, BB_SUID_DROP, ether_wake))
+IF_EXPAND(APPLET(expand, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_EXPR(APPLET(expr, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_FAKEIDENTD(APPLET(fakeidentd, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_FALSE(APPLET_NOFORK(false, false, BB_DIR_BIN, BB_SUID_DROP, false))
+IF_FBSET(APPLET(fbset, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_FBSPLASH(APPLET(fbsplash, BB_DIR_SBIN, BB_SUID_DROP))
+IF_FDFLUSH(APPLET_ODDNAME(fdflush, freeramdisk, BB_DIR_BIN, BB_SUID_DROP, fdflush))
+IF_FDFORMAT(APPLET(fdformat, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_FDISK(APPLET(fdisk, BB_DIR_SBIN, BB_SUID_DROP))
+IF_FGCONSOLE(APPLET(fgconsole, BB_DIR_USR_BIN, BB_SUID_DROP))
 /* Benefits from suid root: better access to /dev/BLOCKDEVs: */
-IF_FINDFS(APPLET(findfs, _BB_DIR_SBIN, _BB_SUID_MAYBE))
-IF_FLASH_ERASEALL(APPLET(flash_eraseall, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_FLASH_LOCK(APPLET_ODDNAME(flash_lock, flash_lock_unlock, _BB_DIR_USR_SBIN, _BB_SUID_DROP, flash_lock))
-IF_FLASH_UNLOCK(APPLET_ODDNAME(flash_unlock, flash_lock_unlock, _BB_DIR_USR_SBIN, _BB_SUID_DROP, flash_unlock))
-IF_FLASHCP(APPLET(flashcp, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_FLOCK(APPLET(flock, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_FOLD(APPLET_NOEXEC(fold, fold, _BB_DIR_USR_BIN, _BB_SUID_DROP, fold))
-IF_FREE(APPLET(free, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_FREERAMDISK(APPLET(freeramdisk, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_FSCK(APPLET(fsck, _BB_DIR_SBIN, _BB_SUID_DROP))
-//IF_E2FSCK(APPLET_ODDNAME(fsck.ext2, e2fsck, _BB_DIR_SBIN, _BB_SUID_DROP, fsck_ext2))
-//IF_E2FSCK(APPLET_ODDNAME(fsck.ext3, e2fsck, _BB_DIR_SBIN, _BB_SUID_DROP, fsck_ext3))
-IF_FSCK_MINIX(APPLET_ODDNAME(fsck.minix, fsck_minix, _BB_DIR_SBIN, _BB_SUID_DROP, fsck_minix))
-IF_FSYNC(APPLET_NOFORK(fsync, fsync, _BB_DIR_BIN, _BB_SUID_DROP, fsync))
-IF_FTPD(APPLET(ftpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_FTPGET(APPLET_ODDNAME(ftpget, ftpgetput, _BB_DIR_USR_BIN, _BB_SUID_DROP, ftpget))
-IF_FTPPUT(APPLET_ODDNAME(ftpput, ftpgetput, _BB_DIR_USR_BIN, _BB_SUID_DROP, ftpput))
-IF_FUSER(APPLET(fuser, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_GETENFORCE(APPLET(getenforce, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_GETOPT(APPLET(getopt, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_GETSEBOOL(APPLET(getsebool, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_GETTY(APPLET(getty, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_GUNZIP(APPLET(gunzip, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_GZIP(APPLET(gzip, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_HD(APPLET_NOEXEC(hd, hexdump, _BB_DIR_USR_BIN, _BB_SUID_DROP, hd))
-IF_HDPARM(APPLET(hdparm, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_HEAD(APPLET_NOEXEC(head, head, _BB_DIR_USR_BIN, _BB_SUID_DROP, head))
-IF_HEXDUMP(APPLET_NOEXEC(hexdump, hexdump, _BB_DIR_USR_BIN, _BB_SUID_DROP, hexdump))
-IF_HOSTID(APPLET_NOFORK(hostid, hostid, _BB_DIR_USR_BIN, _BB_SUID_DROP, hostid))
-IF_HOSTNAME(APPLET(hostname, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_HTTPD(APPLET(httpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_HWCLOCK(APPLET(hwclock, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_ID(APPLET_NOEXEC(id, id, _BB_DIR_USR_BIN, _BB_SUID_DROP, id))
-IF_IFCONFIG(APPLET(ifconfig, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_IFUPDOWN(APPLET_ODDNAME(ifdown, ifupdown, _BB_DIR_SBIN, _BB_SUID_DROP, ifdown))
-IF_IFENSLAVE(APPLET(ifenslave, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_IFPLUGD(APPLET(ifplugd, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_IFUPDOWN(APPLET_ODDNAME(ifup, ifupdown, _BB_DIR_SBIN, _BB_SUID_DROP, ifup))
-IF_INETD(APPLET(inetd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_INOTIFYD(APPLET(inotifyd, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_INSTALL(APPLET(install, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_IONICE(APPLET(ionice, _BB_DIR_BIN, _BB_SUID_DROP))
+IF_FINDFS(APPLET(findfs, BB_DIR_SBIN, BB_SUID_MAYBE))
+IF_FLASH_ERASEALL(APPLET(flash_eraseall, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_FLASH_LOCK(APPLET_ODDNAME(flash_lock, flash_lock_unlock, BB_DIR_USR_SBIN, BB_SUID_DROP, flash_lock))
+IF_FLASH_UNLOCK(APPLET_ODDNAME(flash_unlock, flash_lock_unlock, BB_DIR_USR_SBIN, BB_SUID_DROP, flash_unlock))
+IF_FLASHCP(APPLET(flashcp, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_FLOCK(APPLET(flock, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_FOLD(APPLET_NOEXEC(fold, fold, BB_DIR_USR_BIN, BB_SUID_DROP, fold))
+IF_FREE(APPLET(free, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_FREERAMDISK(APPLET(freeramdisk, BB_DIR_SBIN, BB_SUID_DROP))
+IF_FSCK(APPLET(fsck, BB_DIR_SBIN, BB_SUID_DROP))
+//IF_E2FSCK(APPLET_ODDNAME(fsck.ext2, e2fsck, BB_DIR_SBIN, BB_SUID_DROP, fsck_ext2))
+//IF_E2FSCK(APPLET_ODDNAME(fsck.ext3, e2fsck, BB_DIR_SBIN, BB_SUID_DROP, fsck_ext3))
+IF_FSCK_MINIX(APPLET_ODDNAME(fsck.minix, fsck_minix, BB_DIR_SBIN, BB_SUID_DROP, fsck_minix))
+IF_FSYNC(APPLET_NOFORK(fsync, fsync, BB_DIR_BIN, BB_SUID_DROP, fsync))
+IF_FTPD(APPLET(ftpd, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_FTPGET(APPLET_ODDNAME(ftpget, ftpgetput, BB_DIR_USR_BIN, BB_SUID_DROP, ftpget))
+IF_FTPPUT(APPLET_ODDNAME(ftpput, ftpgetput, BB_DIR_USR_BIN, BB_SUID_DROP, ftpput))
+IF_FUSER(APPLET(fuser, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_GETENFORCE(APPLET(getenforce, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_GETOPT(APPLET(getopt, BB_DIR_BIN, BB_SUID_DROP))
+IF_GETSEBOOL(APPLET(getsebool, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_GETTY(APPLET(getty, BB_DIR_SBIN, BB_SUID_DROP))
+IF_GUNZIP(APPLET(gunzip, BB_DIR_BIN, BB_SUID_DROP))
+IF_GZIP(APPLET(gzip, BB_DIR_BIN, BB_SUID_DROP))
+IF_HD(APPLET_NOEXEC(hd, hexdump, BB_DIR_USR_BIN, BB_SUID_DROP, hd))
+IF_HDPARM(APPLET(hdparm, BB_DIR_SBIN, BB_SUID_DROP))
+IF_HEAD(APPLET_NOEXEC(head, head, BB_DIR_USR_BIN, BB_SUID_DROP, head))
+IF_HEXDUMP(APPLET_NOEXEC(hexdump, hexdump, BB_DIR_USR_BIN, BB_SUID_DROP, hexdump))
+IF_HOSTID(APPLET_NOFORK(hostid, hostid, BB_DIR_USR_BIN, BB_SUID_DROP, hostid))
+IF_HOSTNAME(APPLET(hostname, BB_DIR_BIN, BB_SUID_DROP))
+IF_HTTPD(APPLET(httpd, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_HWCLOCK(APPLET(hwclock, BB_DIR_SBIN, BB_SUID_DROP))
+IF_ID(APPLET_NOEXEC(id, id, BB_DIR_USR_BIN, BB_SUID_DROP, id))
+IF_IFCONFIG(APPLET(ifconfig, BB_DIR_SBIN, BB_SUID_DROP))
+IF_IFUPDOWN(APPLET_ODDNAME(ifdown, ifupdown, BB_DIR_SBIN, BB_SUID_DROP, ifdown))
+IF_IFENSLAVE(APPLET(ifenslave, BB_DIR_SBIN, BB_SUID_DROP))
+IF_IFPLUGD(APPLET(ifplugd, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_IFUPDOWN(APPLET_ODDNAME(ifup, ifupdown, BB_DIR_SBIN, BB_SUID_DROP, ifup))
+IF_INETD(APPLET(inetd, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_INOTIFYD(APPLET(inotifyd, BB_DIR_SBIN, BB_SUID_DROP))
+IF_INSTALL(APPLET(install, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_IONICE(APPLET(ionice, BB_DIR_BIN, BB_SUID_DROP))
 #if ENABLE_FEATURE_IP_ADDRESS \
  || ENABLE_FEATURE_IP_ROUTE \
  || ENABLE_FEATURE_IP_LINK \
  || ENABLE_FEATURE_IP_TUNNEL \
  || ENABLE_FEATURE_IP_RULE
-IF_IP(APPLET(ip, _BB_DIR_BIN, _BB_SUID_DROP))
+IF_IP(APPLET(ip, BB_DIR_BIN, BB_SUID_DROP))
 #endif
-IF_IPADDR(APPLET(ipaddr, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_IPCALC(APPLET(ipcalc, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_IPCRM(APPLET(ipcrm, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_IPCS(APPLET(ipcs, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_IPLINK(APPLET(iplink, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_IPROUTE(APPLET(iproute, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_IPRULE(APPLET(iprule, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_IPTUNNEL(APPLET(iptunnel, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_KBD_MODE(APPLET(kbd_mode, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_KILL(APPLET(kill, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_KILLALL(APPLET_ODDNAME(killall, kill, _BB_DIR_USR_BIN, _BB_SUID_DROP, killall))
-IF_KILLALL5(APPLET_ODDNAME(killall5, kill, _BB_DIR_USR_BIN, _BB_SUID_DROP, killall5))
-IF_KLOGD(APPLET(klogd, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_LAST(APPLET(last, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_LENGTH(APPLET_NOFORK(length, length, _BB_DIR_USR_BIN, _BB_SUID_DROP, length))
-IF_LESS(APPLET(less, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_SETARCH(APPLET_ODDNAME(linux32, setarch, _BB_DIR_BIN, _BB_SUID_DROP, linux32))
-IF_SETARCH(APPLET_ODDNAME(linux64, setarch, _BB_DIR_BIN, _BB_SUID_DROP, linux64))
-IF_LN(APPLET_NOEXEC(ln, ln, _BB_DIR_BIN, _BB_SUID_DROP, ln))
-IF_LOAD_POLICY(APPLET(load_policy, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_LOADFONT(APPLET(loadfont, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_LOADKMAP(APPLET(loadkmap, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_LOGGER(APPLET(logger, _BB_DIR_USR_BIN, _BB_SUID_DROP))
+IF_IPADDR(APPLET(ipaddr, BB_DIR_BIN, BB_SUID_DROP))
+IF_IPCALC(APPLET(ipcalc, BB_DIR_BIN, BB_SUID_DROP))
+IF_IPCRM(APPLET(ipcrm, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_IPCS(APPLET(ipcs, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_IPLINK(APPLET(iplink, BB_DIR_BIN, BB_SUID_DROP))
+IF_IPROUTE(APPLET(iproute, BB_DIR_BIN, BB_SUID_DROP))
+IF_IPRULE(APPLET(iprule, BB_DIR_BIN, BB_SUID_DROP))
+IF_IPTUNNEL(APPLET(iptunnel, BB_DIR_BIN, BB_SUID_DROP))
+IF_KBD_MODE(APPLET(kbd_mode, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_KILL(APPLET(kill, BB_DIR_BIN, BB_SUID_DROP))
+IF_KILLALL(APPLET_ODDNAME(killall, kill, BB_DIR_USR_BIN, BB_SUID_DROP, killall))
+IF_KILLALL5(APPLET_ODDNAME(killall5, kill, BB_DIR_USR_BIN, BB_SUID_DROP, killall5))
+IF_KLOGD(APPLET(klogd, BB_DIR_SBIN, BB_SUID_DROP))
+IF_LAST(APPLET(last, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_LENGTH(APPLET_NOFORK(length, length, BB_DIR_USR_BIN, BB_SUID_DROP, length))
+IF_LESS(APPLET(less, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_SETARCH(APPLET_ODDNAME(linux32, setarch, BB_DIR_BIN, BB_SUID_DROP, linux32))
+IF_SETARCH(APPLET_ODDNAME(linux64, setarch, BB_DIR_BIN, BB_SUID_DROP, linux64))
+IF_LN(APPLET_NOEXEC(ln, ln, BB_DIR_BIN, BB_SUID_DROP, ln))
+IF_LOAD_POLICY(APPLET(load_policy, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_LOADFONT(APPLET(loadfont, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_LOADKMAP(APPLET(loadkmap, BB_DIR_SBIN, BB_SUID_DROP))
+IF_LOGGER(APPLET(logger, BB_DIR_USR_BIN, BB_SUID_DROP))
 /* Needs to be run by root or be suid root - needs to change uid and gid: */
-IF_LOGIN(APPLET(login, _BB_DIR_BIN, _BB_SUID_REQUIRE))
-IF_LOGNAME(APPLET_NOFORK(logname, logname, _BB_DIR_USR_BIN, _BB_SUID_DROP, logname))
-IF_LOGREAD(APPLET(logread, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_LOSETUP(APPLET(losetup, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_LPD(APPLET(lpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_LPQ(APPLET_ODDNAME(lpq, lpqr, _BB_DIR_USR_BIN, _BB_SUID_DROP, lpq))
-IF_LPR(APPLET_ODDNAME(lpr, lpqr, _BB_DIR_USR_BIN, _BB_SUID_DROP, lpr))
-IF_LS(APPLET_NOEXEC(ls, ls, _BB_DIR_BIN, _BB_SUID_DROP, ls))
-IF_LSATTR(APPLET(lsattr, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_LSPCI(APPLET(lspci, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_LSUSB(APPLET(lsusb, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, _BB_DIR_USR_BIN, _BB_SUID_DROP, lzcat))
-IF_LZMA(APPLET_ODDNAME(lzma, unlzma, _BB_DIR_USR_BIN, _BB_SUID_DROP, lzma))
-IF_LZOP(APPLET(lzop, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, _BB_DIR_USR_BIN, _BB_SUID_DROP, lzopcat))
-IF_MAKEDEVS(APPLET(makedevs, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_MAKEMIME(APPLET(makemime, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_MAN(APPLET(man, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_MATCHPATHCON(APPLET(matchpathcon, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_MD5SUM(APPLET_NOEXEC(md5sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, md5sum))
-IF_MDEV(APPLET(mdev, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_MICROCOM(APPLET(microcom, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_MKDIR(APPLET_NOFORK(mkdir, mkdir, _BB_DIR_BIN, _BB_SUID_DROP, mkdir))
-IF_MKFS_VFAT(APPLET_ODDNAME(mkdosfs, mkfs_vfat, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_vfat))
-IF_MKFS_EXT2(APPLET_ODDNAME(mke2fs, mkfs_ext2, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_ext2))
-IF_MKFIFO(APPLET_NOEXEC(mkfifo, mkfifo, _BB_DIR_USR_BIN, _BB_SUID_DROP, mkfifo))
-IF_MKFS_EXT2(APPLET_ODDNAME(mkfs.ext2, mkfs_ext2, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_ext2))
-//IF_MKE2FS(APPLET_ODDNAME(mkfs.ext3, mke2fs, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_ext3))
-IF_MKFS_MINIX(APPLET_ODDNAME(mkfs.minix, mkfs_minix, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_minix))
-IF_MKFS_REISER(APPLET_ODDNAME(mkfs.reiser, mkfs_reiser, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_reiser))
-IF_MKFS_VFAT(APPLET_ODDNAME(mkfs.vfat, mkfs_vfat, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_vfat))
-IF_MKNOD(APPLET_NOEXEC(mknod, mknod, _BB_DIR_BIN, _BB_SUID_DROP, mknod))
-IF_CRYPTPW(APPLET_ODDNAME(mkpasswd, cryptpw, _BB_DIR_USR_BIN, _BB_SUID_DROP, mkpasswd))
-IF_MKSWAP(APPLET(mkswap, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_MKTEMP(APPLET(mktemp, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_MORE(APPLET(more, _BB_DIR_BIN, _BB_SUID_DROP))
+IF_LOGIN(APPLET(login, BB_DIR_BIN, BB_SUID_REQUIRE))
+IF_LOGNAME(APPLET_NOFORK(logname, logname, BB_DIR_USR_BIN, BB_SUID_DROP, logname))
+IF_LOGREAD(APPLET(logread, BB_DIR_SBIN, BB_SUID_DROP))
+IF_LOSETUP(APPLET(losetup, BB_DIR_SBIN, BB_SUID_DROP))
+IF_LPD(APPLET(lpd, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_LPQ(APPLET_ODDNAME(lpq, lpqr, BB_DIR_USR_BIN, BB_SUID_DROP, lpq))
+IF_LPR(APPLET_ODDNAME(lpr, lpqr, BB_DIR_USR_BIN, BB_SUID_DROP, lpr))
+IF_LS(APPLET_NOEXEC(ls, ls, BB_DIR_BIN, BB_SUID_DROP, ls))
+IF_LSATTR(APPLET(lsattr, BB_DIR_BIN, BB_SUID_DROP))
+IF_LSPCI(APPLET(lspci, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_LSUSB(APPLET(lsusb, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzcat))
+IF_LZMA(APPLET_ODDNAME(lzma, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzma))
+IF_LZOP(APPLET(lzop, BB_DIR_BIN, BB_SUID_DROP))
+IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, lzopcat))
+IF_MAKEDEVS(APPLET(makedevs, BB_DIR_SBIN, BB_SUID_DROP))
+IF_MAKEMIME(APPLET(makemime, BB_DIR_BIN, BB_SUID_DROP))
+IF_MAN(APPLET(man, BB_DIR_SBIN, BB_SUID_DROP))
+IF_MATCHPATHCON(APPLET(matchpathcon, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_MD5SUM(APPLET_NOEXEC(md5sum, md5_sha1_sum, BB_DIR_USR_BIN, BB_SUID_DROP, md5sum))
+IF_MDEV(APPLET(mdev, BB_DIR_SBIN, BB_SUID_DROP))
+IF_MICROCOM(APPLET(microcom, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_MKDIR(APPLET_NOFORK(mkdir, mkdir, BB_DIR_BIN, BB_SUID_DROP, mkdir))
+IF_MKFS_VFAT(APPLET_ODDNAME(mkdosfs, mkfs_vfat, BB_DIR_SBIN, BB_SUID_DROP, mkfs_vfat))
+IF_MKFS_EXT2(APPLET_ODDNAME(mke2fs, mkfs_ext2, BB_DIR_SBIN, BB_SUID_DROP, mkfs_ext2))
+IF_MKFIFO(APPLET_NOEXEC(mkfifo, mkfifo, BB_DIR_USR_BIN, BB_SUID_DROP, mkfifo))
+IF_MKFS_EXT2(APPLET_ODDNAME(mkfs.ext2, mkfs_ext2, BB_DIR_SBIN, BB_SUID_DROP, mkfs_ext2))
+//IF_MKE2FS(APPLET_ODDNAME(mkfs.ext3, mke2fs, BB_DIR_SBIN, BB_SUID_DROP, mkfs_ext3))
+IF_MKFS_MINIX(APPLET_ODDNAME(mkfs.minix, mkfs_minix, BB_DIR_SBIN, BB_SUID_DROP, mkfs_minix))
+IF_MKFS_REISER(APPLET_ODDNAME(mkfs.reiser, mkfs_reiser, BB_DIR_SBIN, BB_SUID_DROP, mkfs_reiser))
+IF_MKFS_VFAT(APPLET_ODDNAME(mkfs.vfat, mkfs_vfat, BB_DIR_SBIN, BB_SUID_DROP, mkfs_vfat))
+IF_MKNOD(APPLET_NOEXEC(mknod, mknod, BB_DIR_BIN, BB_SUID_DROP, mknod))
+IF_CRYPTPW(APPLET_ODDNAME(mkpasswd, cryptpw, BB_DIR_USR_BIN, BB_SUID_DROP, mkpasswd))
+IF_MKSWAP(APPLET(mkswap, BB_DIR_SBIN, BB_SUID_DROP))
+IF_MKTEMP(APPLET(mktemp, BB_DIR_BIN, BB_SUID_DROP))
+IF_MORE(APPLET(more, BB_DIR_BIN, BB_SUID_DROP))
 /* On full-blown systems, requires suid for user mounts.
  * But it's not unthinkable to have it available in non-suid flavor on some systems,
  * for viewing mount table.
- * Therefore we use _BB_SUID_MAYBE instead of _BB_SUID_REQUIRE: */
-IF_MOUNT(APPLET(mount, _BB_DIR_BIN, IF_DESKTOP(_BB_SUID_MAYBE) IF_NOT_DESKTOP(_BB_SUID_DROP)))
-IF_MOUNTPOINT(APPLET(mountpoint, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_MT(APPLET(mt, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_MV(APPLET(mv, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_NAMEIF(APPLET(nameif, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_NC(APPLET(nc, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_NETSTAT(APPLET(netstat, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_NICE(APPLET(nice, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_NOHUP(APPLET(nohup, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_NSLOOKUP(APPLET(nslookup, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_NTPD(APPLET(ntpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_OD(APPLET(od, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_OPENVT(APPLET(openvt, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-//IF_PARSE(APPLET(parse, _BB_DIR_USR_BIN, _BB_SUID_DROP))
+ * Therefore we use BB_SUID_MAYBE instead of BB_SUID_REQUIRE: */
+IF_MOUNT(APPLET(mount, BB_DIR_BIN, IF_DESKTOP(BB_SUID_MAYBE) IF_NOT_DESKTOP(BB_SUID_DROP)))
+IF_MOUNTPOINT(APPLET(mountpoint, BB_DIR_BIN, BB_SUID_DROP))
+IF_MT(APPLET(mt, BB_DIR_BIN, BB_SUID_DROP))
+IF_MV(APPLET(mv, BB_DIR_BIN, BB_SUID_DROP))
+IF_NAMEIF(APPLET(nameif, BB_DIR_SBIN, BB_SUID_DROP))
+IF_NC(APPLET(nc, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_NETSTAT(APPLET(netstat, BB_DIR_BIN, BB_SUID_DROP))
+IF_NICE(APPLET(nice, BB_DIR_BIN, BB_SUID_DROP))
+IF_NOHUP(APPLET(nohup, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_NSLOOKUP(APPLET(nslookup, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_NTPD(APPLET(ntpd, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_OD(APPLET(od, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_OPENVT(APPLET(openvt, BB_DIR_USR_BIN, BB_SUID_DROP))
+//IF_PARSE(APPLET(parse, BB_DIR_USR_BIN, BB_SUID_DROP))
 /* Needs to be run by root or be suid root - needs to change /etc/{passwd,shadow}: */
-IF_PASSWD(APPLET(passwd, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE))
-IF_PGREP(APPLET(pgrep, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_PIDOF(APPLET(pidof, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_PIPE_PROGRESS(APPLET(pipe_progress, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_PIVOT_ROOT(APPLET(pivot_root, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_PKILL(APPLET_ODDNAME(pkill, pgrep, _BB_DIR_USR_BIN, _BB_SUID_DROP, pkill))
-IF_POPMAILDIR(APPLET(popmaildir, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_PRINTENV(APPLET_NOFORK(printenv, printenv, _BB_DIR_BIN, _BB_SUID_DROP, printenv))
-IF_PRINTF(APPLET_NOFORK(printf, printf, _BB_DIR_USR_BIN, _BB_SUID_DROP, printf))
-IF_PS(APPLET(ps, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_PSCAN(APPLET(pscan, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_PWD(APPLET_NOFORK(pwd, pwd, _BB_DIR_BIN, _BB_SUID_DROP, pwd))
-IF_RAIDAUTORUN(APPLET(raidautorun, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_RDATE(APPLET(rdate, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_RDEV(APPLET(rdev, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_READAHEAD(APPLET(readahead, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_READLINK(APPLET(readlink, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_READPROFILE(APPLET(readprofile, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_REALPATH(APPLET(realpath, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_REFORMIME(APPLET(reformime, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_RENICE(APPLET(renice, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_RESET(APPLET(reset, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_RESIZE(APPLET(resize, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_RESTORECON(APPLET_ODDNAME(restorecon, setfiles, _BB_DIR_SBIN, _BB_SUID_DROP, restorecon))
-IF_RFKILL(APPLET(rfkill, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_RM(APPLET_NOFORK(rm, rm, _BB_DIR_BIN, _BB_SUID_DROP, rm))
-IF_RMDIR(APPLET_NOFORK(rmdir, rmdir, _BB_DIR_BIN, _BB_SUID_DROP, rmdir))
-IF_ROUTE(APPLET(route, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_RPM(APPLET(rpm, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_RPM2CPIO(APPLET(rpm2cpio, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_RTCWAKE(APPLET(rtcwake, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_RUN_PARTS(APPLET_ODDNAME(run-parts, run_parts, _BB_DIR_BIN, _BB_SUID_DROP, run_parts))
-IF_RUNCON(APPLET(runcon, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_RUNLEVEL(APPLET(runlevel, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_RUNSV(APPLET(runsv, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_RUNSVDIR(APPLET(runsvdir, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_RX(APPLET(rx, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_SCRIPT(APPLET(script, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_SCRIPTREPLAY(APPLET(scriptreplay, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_SED(APPLET(sed, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_SELINUXENABLED(APPLET(selinuxenabled, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_SENDMAIL(APPLET(sendmail, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_SEQ(APPLET_NOFORK(seq, seq, _BB_DIR_USR_BIN, _BB_SUID_DROP, seq))
-IF_SESTATUS(APPLET(sestatus, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_SETARCH(APPLET(setarch, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_SETCONSOLE(APPLET(setconsole, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_SETENFORCE(APPLET(setenforce, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_SETFILES(APPLET(setfiles, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_SETFONT(APPLET(setfont, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_SETKEYCODES(APPLET(setkeycodes, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_SETLOGCONS(APPLET(setlogcons, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_SETSEBOOL(APPLET(setsebool, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_SETSID(APPLET(setsid, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_SETUIDGID(APPLET_ODDNAME(setuidgid, chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP, setuidgid))
-IF_SHA1SUM(APPLET_NOEXEC(sha1sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, sha1sum))
-IF_SHA256SUM(APPLET_NOEXEC(sha256sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, sha256sum))
-IF_SHA512SUM(APPLET_NOEXEC(sha512sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, sha512sum))
-IF_SHOWKEY(APPLET(showkey, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_SLATTACH(APPLET(slattach, _BB_DIR_SBIN, _BB_SUID_DROP))
+IF_PASSWD(APPLET(passwd, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
+IF_PGREP(APPLET(pgrep, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_PIDOF(APPLET(pidof, BB_DIR_BIN, BB_SUID_DROP))
+IF_PIPE_PROGRESS(APPLET(pipe_progress, BB_DIR_BIN, BB_SUID_DROP))
+IF_PIVOT_ROOT(APPLET(pivot_root, BB_DIR_SBIN, BB_SUID_DROP))
+IF_PKILL(APPLET_ODDNAME(pkill, pgrep, BB_DIR_USR_BIN, BB_SUID_DROP, pkill))
+IF_POPMAILDIR(APPLET(popmaildir, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_PRINTENV(APPLET_NOFORK(printenv, printenv, BB_DIR_BIN, BB_SUID_DROP, printenv))
+IF_PRINTF(APPLET_NOFORK(printf, printf, BB_DIR_USR_BIN, BB_SUID_DROP, printf))
+IF_PS(APPLET(ps, BB_DIR_BIN, BB_SUID_DROP))
+IF_PSCAN(APPLET(pscan, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_PWD(APPLET_NOFORK(pwd, pwd, BB_DIR_BIN, BB_SUID_DROP, pwd))
+IF_RAIDAUTORUN(APPLET(raidautorun, BB_DIR_SBIN, BB_SUID_DROP))
+IF_RDATE(APPLET(rdate, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_RDEV(APPLET(rdev, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_READAHEAD(APPLET(readahead, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_READLINK(APPLET(readlink, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_READPROFILE(APPLET(readprofile, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_REALPATH(APPLET(realpath, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_REFORMIME(APPLET(reformime, BB_DIR_BIN, BB_SUID_DROP))
+IF_RENICE(APPLET(renice, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_RESET(APPLET(reset, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_RESIZE(APPLET(resize, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_RESTORECON(APPLET_ODDNAME(restorecon, setfiles, BB_DIR_SBIN, BB_SUID_DROP, restorecon))
+IF_RFKILL(APPLET(rfkill, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_RM(APPLET_NOFORK(rm, rm, BB_DIR_BIN, BB_SUID_DROP, rm))
+IF_RMDIR(APPLET_NOFORK(rmdir, rmdir, BB_DIR_BIN, BB_SUID_DROP, rmdir))
+IF_ROUTE(APPLET(route, BB_DIR_SBIN, BB_SUID_DROP))
+IF_RPM(APPLET(rpm, BB_DIR_BIN, BB_SUID_DROP))
+IF_RPM2CPIO(APPLET(rpm2cpio, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_RTCWAKE(APPLET(rtcwake, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_RUN_PARTS(APPLET_ODDNAME(run-parts, run_parts, BB_DIR_BIN, BB_SUID_DROP, run_parts))
+IF_RUNCON(APPLET(runcon, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_RUNLEVEL(APPLET(runlevel, BB_DIR_SBIN, BB_SUID_DROP))
+IF_RUNSV(APPLET(runsv, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_RUNSVDIR(APPLET(runsvdir, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_RX(APPLET(rx, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_SCRIPT(APPLET(script, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_SCRIPTREPLAY(APPLET(scriptreplay, BB_DIR_BIN, BB_SUID_DROP))
+IF_SED(APPLET(sed, BB_DIR_BIN, BB_SUID_DROP))
+IF_SELINUXENABLED(APPLET(selinuxenabled, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_SENDMAIL(APPLET(sendmail, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_SEQ(APPLET_NOFORK(seq, seq, BB_DIR_USR_BIN, BB_SUID_DROP, seq))
+IF_SESTATUS(APPLET(sestatus, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_SETARCH(APPLET(setarch, BB_DIR_BIN, BB_SUID_DROP))
+IF_SETCONSOLE(APPLET(setconsole, BB_DIR_SBIN, BB_SUID_DROP))
+IF_SETENFORCE(APPLET(setenforce, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_SETFILES(APPLET(setfiles, BB_DIR_SBIN, BB_SUID_DROP))
+IF_SETFONT(APPLET(setfont, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_SETKEYCODES(APPLET(setkeycodes, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_SETLOGCONS(APPLET(setlogcons, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_SETSEBOOL(APPLET(setsebool, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_SETSID(APPLET(setsid, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_SETUIDGID(APPLET_ODDNAME(setuidgid, chpst, BB_DIR_USR_BIN, BB_SUID_DROP, setuidgid))
+IF_SHA1SUM(APPLET_NOEXEC(sha1sum, md5_sha1_sum, BB_DIR_USR_BIN, BB_SUID_DROP, sha1sum))
+IF_SHA256SUM(APPLET_NOEXEC(sha256sum, md5_sha1_sum, BB_DIR_USR_BIN, BB_SUID_DROP, sha256sum))
+IF_SHA512SUM(APPLET_NOEXEC(sha512sum, md5_sha1_sum, BB_DIR_USR_BIN, BB_SUID_DROP, sha512sum))
+IF_SHOWKEY(APPLET(showkey, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_SLATTACH(APPLET(slattach, BB_DIR_SBIN, BB_SUID_DROP))
 /* Do not make this applet NOFORK. It breaks ^C-ing of pauses in shells: */
-IF_SLEEP(APPLET(sleep, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_SOFTLIMIT(APPLET_ODDNAME(softlimit, chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP, softlimit))
-IF_SORT(APPLET_NOEXEC(sort, sort, _BB_DIR_USR_BIN, _BB_SUID_DROP, sort))
-IF_SPLIT(APPLET(split, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_START_STOP_DAEMON(APPLET_ODDNAME(start-stop-daemon, start_stop_daemon, _BB_DIR_SBIN, _BB_SUID_DROP, start_stop_daemon))
-IF_STAT(APPLET(stat, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_STRINGS(APPLET(strings, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_STTY(APPLET(stty, _BB_DIR_BIN, _BB_SUID_DROP))
+IF_SLEEP(APPLET(sleep, BB_DIR_BIN, BB_SUID_DROP))
+IF_SOFTLIMIT(APPLET_ODDNAME(softlimit, chpst, BB_DIR_USR_BIN, BB_SUID_DROP, softlimit))
+IF_SORT(APPLET_NOEXEC(sort, sort, BB_DIR_USR_BIN, BB_SUID_DROP, sort))
+IF_SPLIT(APPLET(split, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_START_STOP_DAEMON(APPLET_ODDNAME(start-stop-daemon, start_stop_daemon, BB_DIR_SBIN, BB_SUID_DROP, start_stop_daemon))
+IF_STAT(APPLET(stat, BB_DIR_BIN, BB_SUID_DROP))
+IF_STRINGS(APPLET(strings, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_STTY(APPLET(stty, BB_DIR_BIN, BB_SUID_DROP))
 /* Needs to be run by root or be suid root - needs to change uid and gid: */
-IF_SU(APPLET(su, _BB_DIR_BIN, _BB_SUID_REQUIRE))
-IF_SULOGIN(APPLET(sulogin, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_SUM(APPLET(sum, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_SV(APPLET(sv, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_SVLOGD(APPLET(svlogd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_SWAPONOFF(APPLET_ODDNAME(swapoff, swap_on_off, _BB_DIR_SBIN, _BB_SUID_DROP, swapoff))
-IF_SWAPONOFF(APPLET_ODDNAME(swapon, swap_on_off, _BB_DIR_SBIN, _BB_SUID_DROP, swapon))
-IF_SWITCH_ROOT(APPLET(switch_root, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_SYNC(APPLET_NOFORK(sync, sync, _BB_DIR_BIN, _BB_SUID_DROP, sync))
-IF_BB_SYSCTL(APPLET(sysctl, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_SYSLOGD(APPLET(syslogd, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_TAC(APPLET_NOEXEC(tac, tac, _BB_DIR_USR_BIN, _BB_SUID_DROP, tac))
-IF_TAIL(APPLET(tail, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_TAR(APPLET(tar, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_TASKSET(APPLET(taskset, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-/* IF_TC(APPLET(tc, _BB_DIR_SBIN, _BB_SUID_DROP)) */
-IF_TCPSVD(APPLET_ODDNAME(tcpsvd, tcpudpsvd, _BB_DIR_USR_BIN, _BB_SUID_DROP, tcpsvd))
-IF_TEE(APPLET(tee, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_TELNET(APPLET(telnet, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_TELNETD(APPLET(telnetd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_TEST(APPLET_NOFORK(test, test, _BB_DIR_USR_BIN, _BB_SUID_DROP, test))
+IF_SU(APPLET(su, BB_DIR_BIN, BB_SUID_REQUIRE))
+IF_SULOGIN(APPLET(sulogin, BB_DIR_SBIN, BB_SUID_DROP))
+IF_SUM(APPLET(sum, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_SV(APPLET(sv, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_SVLOGD(APPLET(svlogd, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_SWAPONOFF(APPLET_ODDNAME(swapoff, swap_on_off, BB_DIR_SBIN, BB_SUID_DROP, swapoff))
+IF_SWAPONOFF(APPLET_ODDNAME(swapon, swap_on_off, BB_DIR_SBIN, BB_SUID_DROP, swapon))
+IF_SWITCH_ROOT(APPLET(switch_root, BB_DIR_SBIN, BB_SUID_DROP))
+IF_SYNC(APPLET_NOFORK(sync, sync, BB_DIR_BIN, BB_SUID_DROP, sync))
+IF_BB_SYSCTL(APPLET(sysctl, BB_DIR_SBIN, BB_SUID_DROP))
+IF_SYSLOGD(APPLET(syslogd, BB_DIR_SBIN, BB_SUID_DROP))
+IF_TAC(APPLET_NOEXEC(tac, tac, BB_DIR_USR_BIN, BB_SUID_DROP, tac))
+IF_TAIL(APPLET(tail, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_TAR(APPLET(tar, BB_DIR_BIN, BB_SUID_DROP))
+IF_TASKSET(APPLET(taskset, BB_DIR_USR_BIN, BB_SUID_DROP))
+/* IF_TC(APPLET(tc, BB_DIR_SBIN, BB_SUID_DROP)) */
+IF_TCPSVD(APPLET_ODDNAME(tcpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, tcpsvd))
+IF_TEE(APPLET(tee, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_TELNET(APPLET(telnet, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_TELNETD(APPLET(telnetd, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_TEST(APPLET_NOFORK(test, test, BB_DIR_USR_BIN, BB_SUID_DROP, test))
 #if ENABLE_FEATURE_TFTP_GET || ENABLE_FEATURE_TFTP_PUT
-IF_TFTP(APPLET(tftp, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_TFTPD(APPLET(tftpd, _BB_DIR_USR_BIN, _BB_SUID_DROP))
+IF_TFTP(APPLET(tftp, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_TFTPD(APPLET(tftpd, BB_DIR_USR_BIN, BB_SUID_DROP))
 #endif
-IF_TIME(APPLET(time, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_TIMEOUT(APPLET(timeout, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_TOP(APPLET(top, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_TR(APPLET(tr, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-/* Needs socket(AF_INET, SOCK_RAW, IPPROTO_ICMP), therefore _BB_SUID_MAYBE: */
-IF_TRACEROUTE(APPLET(traceroute, _BB_DIR_USR_BIN, _BB_SUID_MAYBE))
-IF_TRACEROUTE6(APPLET(traceroute6, _BB_DIR_USR_BIN, _BB_SUID_MAYBE))
-IF_TRUE(APPLET_NOFORK(true, true, _BB_DIR_BIN, _BB_SUID_DROP, true))
-IF_TTY(APPLET(tty, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_TTYSIZE(APPLET(ttysize, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_TUNCTL(APPLET(tunctl, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_TUNE2FS(APPLET(tune2fs, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_UDHCPC(APPLET(udhcpc, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_UDHCPD(APPLET(udhcpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-IF_UDPSVD(APPLET_ODDNAME(udpsvd, tcpudpsvd, _BB_DIR_USR_BIN, _BB_SUID_DROP, udpsvd))
-IF_UMOUNT(APPLET(umount, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_UNAME(APPLET(uname, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_UNCOMPRESS(APPLET(uncompress, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_UNEXPAND(APPLET_ODDNAME(unexpand, expand, _BB_DIR_USR_BIN, _BB_SUID_DROP, unexpand))
-IF_UNIQ(APPLET(uniq, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_UNIX2DOS(APPLET_NOEXEC(unix2dos, dos2unix, _BB_DIR_USR_BIN, _BB_SUID_DROP, unix2dos))
-IF_UNXZ(APPLET(unxz, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_UNLZMA(APPLET(unlzma, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_LZOP(APPLET_ODDNAME(unlzop, lzop, _BB_DIR_USR_BIN, _BB_SUID_DROP, unlzop))
-IF_UNZIP(APPLET(unzip, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_UPTIME(APPLET(uptime, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_USLEEP(APPLET_NOFORK(usleep, usleep, _BB_DIR_BIN, _BB_SUID_DROP, usleep))
-IF_UUDECODE(APPLET(uudecode, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_UUENCODE(APPLET(uuencode, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_VCONFIG(APPLET(vconfig, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_VI(APPLET(vi, _BB_DIR_BIN, _BB_SUID_DROP))
+IF_TIME(APPLET(time, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_TIMEOUT(APPLET(timeout, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_TOP(APPLET(top, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_TR(APPLET(tr, BB_DIR_USR_BIN, BB_SUID_DROP))
+/* Needs socket(AF_INET, SOCK_RAW, IPPROTO_ICMP), therefore BB_SUID_MAYBE: */
+IF_TRACEROUTE(APPLET(traceroute, BB_DIR_USR_BIN, BB_SUID_MAYBE))
+IF_TRACEROUTE6(APPLET(traceroute6, BB_DIR_USR_BIN, BB_SUID_MAYBE))
+IF_TRUE(APPLET_NOFORK(true, true, BB_DIR_BIN, BB_SUID_DROP, true))
+IF_TTY(APPLET(tty, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_TTYSIZE(APPLET(ttysize, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_TUNCTL(APPLET(tunctl, BB_DIR_SBIN, BB_SUID_DROP))
+IF_TUNE2FS(APPLET(tune2fs, BB_DIR_SBIN, BB_SUID_DROP))
+IF_UDHCPC(APPLET(udhcpc, BB_DIR_SBIN, BB_SUID_DROP))
+IF_UDHCPD(APPLET(udhcpd, BB_DIR_USR_SBIN, BB_SUID_DROP))
+IF_UDPSVD(APPLET_ODDNAME(udpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, udpsvd))
+IF_UMOUNT(APPLET(umount, BB_DIR_BIN, BB_SUID_DROP))
+IF_UNAME(APPLET(uname, BB_DIR_BIN, BB_SUID_DROP))
+IF_UNCOMPRESS(APPLET(uncompress, BB_DIR_BIN, BB_SUID_DROP))
+IF_UNEXPAND(APPLET_ODDNAME(unexpand, expand, BB_DIR_USR_BIN, BB_SUID_DROP, unexpand))
+IF_UNIQ(APPLET(uniq, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_UNIX2DOS(APPLET_NOEXEC(unix2dos, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, unix2dos))
+IF_UNXZ(APPLET(unxz, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_UNLZMA(APPLET(unlzma, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_LZOP(APPLET_ODDNAME(unlzop, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, unlzop))
+IF_UNZIP(APPLET(unzip, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_UPTIME(APPLET(uptime, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_USLEEP(APPLET_NOFORK(usleep, usleep, BB_DIR_BIN, BB_SUID_DROP, usleep))
+IF_UUDECODE(APPLET(uudecode, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_UUENCODE(APPLET(uuencode, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_VCONFIG(APPLET(vconfig, BB_DIR_SBIN, BB_SUID_DROP))
+IF_VI(APPLET(vi, BB_DIR_BIN, BB_SUID_DROP))
 /* Needs to be run by root or be suid root - needs to change uid and gid: */
-IF_VLOCK(APPLET(vlock, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE))
-IF_VOLNAME(APPLET(volname, _BB_DIR_USR_BIN, _BB_SUID_DROP))
+IF_VLOCK(APPLET(vlock, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
+IF_VOLNAME(APPLET(volname, BB_DIR_USR_BIN, BB_SUID_DROP))
 /* Needs to be run by root or be suid root - needs to write to /dev/TTY: */
-IF_WALL(APPLET(wall, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE))
-IF_WATCH(APPLET(watch, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_WATCHDOG(APPLET(watchdog, _BB_DIR_SBIN, _BB_SUID_DROP))
-IF_WC(APPLET(wc, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_WGET(APPLET(wget, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_WHICH(APPLET(which, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_WHO(APPLET(who, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-IF_WHOAMI(APPLET_NOFORK(whoami, whoami, _BB_DIR_USR_BIN, _BB_SUID_DROP, whoami))
-IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, _BB_DIR_USR_BIN, _BB_SUID_DROP, xzcat))
-IF_XZ(APPLET_ODDNAME(xz, unxz, _BB_DIR_USR_BIN, _BB_SUID_DROP, xz))
-IF_YES(APPLET_NOFORK(yes, yes, _BB_DIR_USR_BIN, _BB_SUID_DROP, yes))
-IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, _BB_DIR_BIN, _BB_SUID_DROP, zcat))
-IF_ZCIP(APPLET(zcip, _BB_DIR_SBIN, _BB_SUID_DROP))
+IF_WALL(APPLET(wall, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
+IF_WATCH(APPLET(watch, BB_DIR_BIN, BB_SUID_DROP))
+IF_WATCHDOG(APPLET(watchdog, BB_DIR_SBIN, BB_SUID_DROP))
+IF_WC(APPLET(wc, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_WGET(APPLET(wget, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_WHICH(APPLET(which, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_WHO(APPLET(who, BB_DIR_USR_BIN, BB_SUID_DROP))
+IF_WHOAMI(APPLET_NOFORK(whoami, whoami, BB_DIR_USR_BIN, BB_SUID_DROP, whoami))
+IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat))
+IF_XZ(APPLET_ODDNAME(xz, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xz))
+IF_YES(APPLET_NOFORK(yes, yes, BB_DIR_USR_BIN, BB_SUID_DROP, yes))
+IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat))
+IF_ZCIP(APPLET(zcip, BB_DIR_SBIN, BB_SUID_DROP))
 
 #if !defined(PROTOTYPES) && !defined(NAME_MAIN_CNAME) && !defined(MAKE_USAGE)
 };
diff --git a/include/busybox.h b/include/busybox.h
index 757317fc7..be06817e3 100644
--- a/include/busybox.h
+++ b/include/busybox.h
@@ -13,22 +13,22 @@ PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
 
 /* order matters: used as index into "install_dir[]" in appletlib.c */
 typedef enum bb_install_loc_t {
-	_BB_DIR_ROOT = 0,
-	_BB_DIR_BIN,
-	_BB_DIR_SBIN,
+	BB_DIR_ROOT = 0,
+	BB_DIR_BIN,
+	BB_DIR_SBIN,
 #if ENABLE_INSTALL_NO_USR
-	_BB_DIR_USR_BIN  = _BB_DIR_BIN,
-	_BB_DIR_USR_SBIN = _BB_DIR_SBIN,
+	BB_DIR_USR_BIN  = BB_DIR_BIN,
+	BB_DIR_USR_SBIN = BB_DIR_SBIN,
 #else
-	_BB_DIR_USR_BIN,
-	_BB_DIR_USR_SBIN,
+	BB_DIR_USR_BIN,
+	BB_DIR_USR_SBIN,
 #endif
 } bb_install_loc_t;
 
 typedef enum bb_suid_t {
-	_BB_SUID_DROP = 0,
-	_BB_SUID_MAYBE,
-	_BB_SUID_REQUIRE
+	BB_SUID_DROP = 0,
+	BB_SUID_MAYBE,
+	BB_SUID_REQUIRE
 } bb_suid_t;
 
 
diff --git a/init/bootchartd.c b/init/bootchartd.c
index ac3f261c8..009e2690c 100644
--- a/init/bootchartd.c
+++ b/init/bootchartd.c
@@ -3,7 +3,7 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 
-//applet:IF_BOOTCHARTD(APPLET(bootchartd, _BB_DIR_SBIN, _BB_SUID_DROP))
+//applet:IF_BOOTCHARTD(APPLET(bootchartd, BB_DIR_SBIN, BB_SUID_DROP))
 
 //kbuild:lib-$(CONFIG_BOOTCHARTD) += bootchartd.o
 
diff --git a/init/halt.c b/init/halt.c
index 47f1ef7b2..f853ba4a1 100644
--- a/init/halt.c
+++ b/init/halt.c
@@ -7,9 +7,9 @@
  * Licensed under GPLv2, see file LICENSE in this source tree.
  */
 
-//applet:IF_HALT(APPLET(halt, _BB_DIR_SBIN, _BB_SUID_DROP))
-//applet:IF_HALT(APPLET_ODDNAME(poweroff, halt, _BB_DIR_SBIN, _BB_SUID_DROP, poweroff))
-//applet:IF_HALT(APPLET_ODDNAME(reboot, halt, _BB_DIR_SBIN, _BB_SUID_DROP, reboot))
+//applet:IF_HALT(APPLET(halt, BB_DIR_SBIN, BB_SUID_DROP))
+//applet:IF_HALT(APPLET_ODDNAME(poweroff, halt, BB_DIR_SBIN, BB_SUID_DROP, poweroff))
+//applet:IF_HALT(APPLET_ODDNAME(reboot, halt, BB_DIR_SBIN, BB_SUID_DROP, reboot))
 
 //kbuild:lib-$(CONFIG_HALT) += halt.o
 
diff --git a/init/init.c b/init/init.c
index a2cc3b5f5..d8e180746 100644
--- a/init/init.c
+++ b/init/init.c
@@ -9,8 +9,8 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 
-//applet:IF_INIT(APPLET(init, _BB_DIR_SBIN, _BB_SUID_DROP))
-//applet:IF_FEATURE_INITRD(APPLET_ODDNAME(linuxrc, init, _BB_DIR_ROOT, _BB_SUID_DROP, linuxrc))
+//applet:IF_INIT(APPLET(init, BB_DIR_SBIN, BB_SUID_DROP))
+//applet:IF_FEATURE_INITRD(APPLET_ODDNAME(linuxrc, init, BB_DIR_ROOT, BB_SUID_DROP, linuxrc))
 
 //kbuild:lib-$(CONFIG_INIT) += init.o
 
diff --git a/init/mesg.c b/init/mesg.c
index b6fd070e1..676ca2e24 100644
--- a/init/mesg.c
+++ b/init/mesg.c
@@ -7,7 +7,7 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 
-//applet:IF_MESG(APPLET(mesg, _BB_DIR_USR_BIN, _BB_SUID_DROP))
+//applet:IF_MESG(APPLET(mesg, BB_DIR_USR_BIN, BB_SUID_DROP))
 
 //kbuild:lib-$(CONFIG_MESG) += mesg.o
 
diff --git a/libbb/appletlib.c b/libbb/appletlib.c
index 3e32fa1ef..fc3e962d5 100644
--- a/libbb/appletlib.c
+++ b/libbb/appletlib.c
@@ -574,12 +574,12 @@ static void check_suid(int applet_no)
 #   endif
  check_need_suid:
 #  endif
-	if (APPLET_SUID(applet_no) == _BB_SUID_REQUIRE) {
+	if (APPLET_SUID(applet_no) == BB_SUID_REQUIRE) {
 		/* 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");
-	} else if (APPLET_SUID(applet_no) == _BB_SUID_DROP) {
+	} else if (APPLET_SUID(applet_no) == BB_SUID_DROP) {
 		xsetgid(rgid);  /* drop all privileges */
 		xsetuid(ruid);
 	}
diff --git a/loginutils/add-remove-shell.c b/loginutils/add-remove-shell.c
index 757e50503..9a1454430 100644
--- a/loginutils/add-remove-shell.c
+++ b/loginutils/add-remove-shell.c
@@ -8,8 +8,8 @@
  * for details.
  */
 
-//applet:IF_ADD_SHELL(   APPLET_ODDNAME(add-shell   , add_remove_shell, _BB_DIR_USR_BIN, _BB_SUID_DROP, add_shell   ))
-//applet:IF_REMOVE_SHELL(APPLET_ODDNAME(remove-shell, add_remove_shell, _BB_DIR_USR_BIN, _BB_SUID_DROP, remove_shell))
+//applet:IF_ADD_SHELL(   APPLET_ODDNAME(add-shell   , add_remove_shell, BB_DIR_USR_BIN, BB_SUID_DROP, add_shell   ))
+//applet:IF_REMOVE_SHELL(APPLET_ODDNAME(remove-shell, add_remove_shell, BB_DIR_USR_BIN, BB_SUID_DROP, remove_shell))
 
 //kbuild:lib-$(CONFIG_ADD_SHELL)    += add-remove-shell.o
 //kbuild:lib-$(CONFIG_REMOVE_SHELL) += add-remove-shell.o
diff --git a/miscutils/conspy.c b/miscutils/conspy.c
index 723b4208a..721eb6d59 100644
--- a/miscutils/conspy.c
+++ b/miscutils/conspy.c
@@ -10,7 +10,7 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 
-//applet:IF_CONSPY(APPLET(conspy, _BB_DIR_BIN, _BB_SUID_DROP))
+//applet:IF_CONSPY(APPLET(conspy, BB_DIR_BIN, BB_SUID_DROP))
 
 //kbuild:lib-$(CONFIG_CONSPY) += conspy.o
 
diff --git a/miscutils/nandwrite.c b/miscutils/nandwrite.c
index 831d2f76b..c5e2fb841 100644
--- a/miscutils/nandwrite.c
+++ b/miscutils/nandwrite.c
@@ -8,8 +8,8 @@
  * TODO: add support for large (>4GB) MTD devices
  */
 
-//applet:IF_NANDWRITE(APPLET(nandwrite, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
-//applet:IF_NANDWRITE(APPLET_ODDNAME(nanddump, nandwrite, _BB_DIR_USR_SBIN, _BB_SUID_DROP, nanddump))
+//applet:IF_NANDWRITE(APPLET(nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP))
+//applet:IF_NANDWRITE(APPLET_ODDNAME(nanddump, nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP, nanddump))
 
 //kbuild:lib-$(CONFIG_NANDWRITE) += nandwrite.o
 //kbuild:lib-$(CONFIG_NANDDUMP) += nandwrite.o
diff --git a/miscutils/ubi_attach_detach.c b/miscutils/ubi_attach_detach.c
index b74d97b68..aa8a5171a 100644
--- a/miscutils/ubi_attach_detach.c
+++ b/miscutils/ubi_attach_detach.c
@@ -3,8 +3,8 @@
  * Licensed under GPLv2, see file LICENSE in this source tree.
  */
 
-//applet:IF_UBIATTACH(APPLET_ODDNAME(ubiattach, ubi_attach_detach, _BB_DIR_USR_SBIN, _BB_SUID_DROP, ubiattach))
-//applet:IF_UBIDETACH(APPLET_ODDNAME(ubidetach, ubi_attach_detach, _BB_DIR_USR_SBIN, _BB_SUID_DROP, ubidetach))
+//applet:IF_UBIATTACH(APPLET_ODDNAME(ubiattach, ubi_attach_detach, BB_DIR_USR_SBIN, BB_SUID_DROP, ubiattach))
+//applet:IF_UBIDETACH(APPLET_ODDNAME(ubidetach, ubi_attach_detach, BB_DIR_USR_SBIN, BB_SUID_DROP, ubidetach))
 
 //kbuild:lib-$(CONFIG_UBIATTACH)   += ubi_attach_detach.o
 //kbuild:lib-$(CONFIG_UBIDETACH)   += ubi_attach_detach.o
diff --git a/modutils/depmod.c b/modutils/depmod.c
index 85b64a229..f6c0bf33a 100644
--- a/modutils/depmod.c
+++ b/modutils/depmod.c
@@ -8,7 +8,7 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 
-//applet:IF_DEPMOD(APPLET(depmod, _BB_DIR_SBIN, _BB_SUID_DROP))
+//applet:IF_DEPMOD(APPLET(depmod, BB_DIR_SBIN, BB_SUID_DROP))
 
 //usage:#if !ENABLE_MODPROBE_SMALL
 //usage:#define depmod_trivial_usage NOUSAGE_STR
diff --git a/modutils/insmod.c b/modutils/insmod.c
index 7ec3cae47..e5b46f402 100644
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
@@ -7,7 +7,7 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 
-//applet:IF_INSMOD(APPLET(insmod, _BB_DIR_SBIN, _BB_SUID_DROP))
+//applet:IF_INSMOD(APPLET(insmod, BB_DIR_SBIN, BB_SUID_DROP))
 
 #include "libbb.h"
 #include "modutils.h"
diff --git a/modutils/lsmod.c b/modutils/lsmod.c
index d7e16689b..3b3c166b9 100644
--- a/modutils/lsmod.c
+++ b/modutils/lsmod.c
@@ -8,7 +8,7 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 
-//applet:IF_LSMOD(APPLET(lsmod, _BB_DIR_SBIN, _BB_SUID_DROP))
+//applet:IF_LSMOD(APPLET(lsmod, BB_DIR_SBIN, BB_SUID_DROP))
 
 //usage:#if !ENABLE_MODPROBE_SMALL
 //usage:#define lsmod_trivial_usage
diff --git a/modutils/modinfo.c b/modutils/modinfo.c
index 37ba77edf..731fc0553 100644
--- a/modutils/modinfo.c
+++ b/modutils/modinfo.c
@@ -6,7 +6,7 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 
-//applet:IF_MODINFO(APPLET(modinfo, _BB_DIR_SBIN, _BB_SUID_DROP))
+//applet:IF_MODINFO(APPLET(modinfo, BB_DIR_SBIN, BB_SUID_DROP))
 
 //kbuild:lib-$(CONFIG_MODINFO) += modinfo.o modutils.o
 
diff --git a/modutils/modprobe-small.c b/modutils/modprobe-small.c
index 188a7f229..2a69eb513 100644
--- a/modutils/modprobe-small.c
+++ b/modutils/modprobe-small.c
@@ -8,11 +8,11 @@
  * Licensed under GPLv2, see file LICENSE in this source tree.
  */
 
-//applet:IF_MODPROBE_SMALL(APPLET(modprobe, _BB_DIR_SBIN, _BB_SUID_DROP))
-//applet:IF_MODPROBE_SMALL(APPLET_ODDNAME(depmod, modprobe, _BB_DIR_SBIN, _BB_SUID_DROP, modprobe))
-//applet:IF_MODPROBE_SMALL(APPLET_ODDNAME(insmod, modprobe, _BB_DIR_SBIN, _BB_SUID_DROP, modprobe))
-//applet:IF_MODPROBE_SMALL(APPLET_ODDNAME(lsmod, modprobe, _BB_DIR_SBIN, _BB_SUID_DROP, modprobe))
-//applet:IF_MODPROBE_SMALL(APPLET_ODDNAME(rmmod, modprobe, _BB_DIR_SBIN, _BB_SUID_DROP, modprobe))
+//applet:IF_MODPROBE_SMALL(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP))
+//applet:IF_MODPROBE_SMALL(APPLET_ODDNAME(depmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe))
+//applet:IF_MODPROBE_SMALL(APPLET_ODDNAME(insmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe))
+//applet:IF_MODPROBE_SMALL(APPLET_ODDNAME(lsmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe))
+//applet:IF_MODPROBE_SMALL(APPLET_ODDNAME(rmmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe))
 
 #include "libbb.h"
 /* After libbb.h, since it needs sys/types.h on some systems */
diff --git a/modutils/modprobe.c b/modutils/modprobe.c
index 73df39c6c..e3bacac56 100644
--- a/modutils/modprobe.c
+++ b/modutils/modprobe.c
@@ -8,7 +8,7 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 
-//applet:IF_MODPROBE(APPLET(modprobe, _BB_DIR_SBIN, _BB_SUID_DROP))
+//applet:IF_MODPROBE(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP))
 
 #include "libbb.h"
 #include "modutils.h"
diff --git a/modutils/rmmod.c b/modutils/rmmod.c
index 2486511d7..65a4911cd 100644
--- a/modutils/rmmod.c
+++ b/modutils/rmmod.c
@@ -8,7 +8,7 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 
-//applet:IF_RMMOD(APPLET(rmmod, _BB_DIR_SBIN, _BB_SUID_DROP))
+//applet:IF_RMMOD(APPLET(rmmod, BB_DIR_SBIN, BB_SUID_DROP))
 
 //usage:#if !ENABLE_MODPROBE_SMALL
 //usage:#define rmmod_trivial_usage
diff --git a/networking/nbd-client.c b/networking/nbd-client.c
index 8b856eda7..cadda5261 100644
--- a/networking/nbd-client.c
+++ b/networking/nbd-client.c
@@ -7,7 +7,7 @@
 #include <netinet/tcp.h>
 #include <linux/fs.h>
 
-//applet:IF_NBDCLIENT(APPLET_ODDNAME(nbd-client, nbdclient, _BB_DIR_USR_SBIN, _BB_SUID_DROP, nbdclient))
+//applet:IF_NBDCLIENT(APPLET_ODDNAME(nbd-client, nbdclient, BB_DIR_USR_SBIN, BB_SUID_DROP, nbdclient))
 
 //kbuild:lib-$(CONFIG_NBDCLIENT) += nbd-client.o
 
diff --git a/networking/ping.c b/networking/ping.c
index 366a98668..11ce24eb5 100644
--- a/networking/ping.c
+++ b/networking/ping.c
@@ -52,9 +52,9 @@
 //config:	  Make the output from the ping applet include statistics, and at the
 //config:	  same time provide full support for ICMP packets.
 
-/* Needs socket(AF_INET, SOCK_RAW, IPPROTO_ICMP), therefore _BB_SUID_MAYBE: */
-//applet:IF_PING(APPLET(ping, _BB_DIR_BIN, _BB_SUID_MAYBE))
-//applet:IF_PING6(APPLET(ping6, _BB_DIR_BIN, _BB_SUID_MAYBE))
+/* Needs socket(AF_INET, SOCK_RAW, IPPROTO_ICMP), therefore BB_SUID_MAYBE: */
+//applet:IF_PING(APPLET(ping, BB_DIR_BIN, BB_SUID_MAYBE))
+//applet:IF_PING6(APPLET(ping6, BB_DIR_BIN, BB_SUID_MAYBE))
 
 //kbuild:lib-$(CONFIG_PING)  += ping.o
 //kbuild:lib-$(CONFIG_PING6) += ping.o
diff --git a/procps/iostat.c b/procps/iostat.c
index a9ff13a05..06a33eb1d 100644
--- a/procps/iostat.c
+++ b/procps/iostat.c
@@ -7,7 +7,7 @@
  * Licensed under GPLv2, see file LICENSE in this source tree.
  */
 
-//applet:IF_IOSTAT(APPLET(iostat, _BB_DIR_BIN, _BB_SUID_DROP))
+//applet:IF_IOSTAT(APPLET(iostat, BB_DIR_BIN, BB_SUID_DROP))
 
 //kbuild:lib-$(CONFIG_IOSTAT) += iostat.o
 
diff --git a/procps/mpstat.c b/procps/mpstat.c
index 25efedf62..d643c999f 100644
--- a/procps/mpstat.c
+++ b/procps/mpstat.c
@@ -7,7 +7,7 @@
  * Licensed under GPLv2, see file LICENSE in this source tree.
  */
 
-//applet:IF_MPSTAT(APPLET(mpstat, _BB_DIR_BIN, _BB_SUID_DROP))
+//applet:IF_MPSTAT(APPLET(mpstat, BB_DIR_BIN, BB_SUID_DROP))
 
 //kbuild:lib-$(CONFIG_MPSTAT) += mpstat.o
 
diff --git a/procps/nmeter.c b/procps/nmeter.c
index ac019eb53..48b56a399 100644
--- a/procps/nmeter.c
+++ b/procps/nmeter.c
@@ -12,7 +12,7 @@
 //config:	help
 //config:	  Prints selected system stats continuously, one line per update.
 
-//applet:IF_NMETER(APPLET(nmeter, _BB_DIR_USR_BIN, _BB_SUID_DROP))
+//applet:IF_NMETER(APPLET(nmeter, BB_DIR_USR_BIN, BB_SUID_DROP))
 
 //kbuild:lib-$(CONFIG_NMETER) += nmeter.o
 
diff --git a/procps/pmap.c b/procps/pmap.c
index bb5f9e7c2..7f7f391b9 100644
--- a/procps/pmap.c
+++ b/procps/pmap.c
@@ -8,7 +8,7 @@
  * for details.
  */
 
-//applet:IF_PMAP(APPLET(pmap, _BB_DIR_USR_BIN, _BB_SUID_DROP))
+//applet:IF_PMAP(APPLET(pmap, BB_DIR_USR_BIN, BB_SUID_DROP))
 //kbuild:lib-$(CONFIG_PMAP)     += pmap.o
 
 //config:config PMAP
diff --git a/procps/powertop.c b/procps/powertop.c
index 2f977a03b..bfe5a9568 100644
--- a/procps/powertop.c
+++ b/procps/powertop.c
@@ -9,7 +9,7 @@
  * Licensed under GPLv2, see file LICENSE in this source tree.
  */
 
-//applet:IF_POWERTOP(APPLET(powertop, _BB_DIR_BIN, _BB_SUID_DROP))
+//applet:IF_POWERTOP(APPLET(powertop, BB_DIR_BIN, BB_SUID_DROP))
 
 //kbuild:lib-$(CONFIG_POWERTOP) += powertop.o
 
diff --git a/procps/pstree.c b/procps/pstree.c
index 180d0939a..ddf5dba59 100644
--- a/procps/pstree.c
+++ b/procps/pstree.c
@@ -16,7 +16,7 @@
 //config:	help
 //config:	  Display a tree of processes.
 
-//applet:IF_PSTREE(APPLET(pstree, _BB_DIR_USR_BIN, _BB_SUID_DROP))
+//applet:IF_PSTREE(APPLET(pstree, BB_DIR_USR_BIN, BB_SUID_DROP))
 
 //kbuild:lib-$(CONFIG_PSTREE) += pstree.o
 
diff --git a/procps/smemcap.c b/procps/smemcap.c
index 200df6795..e108d88ad 100644
--- a/procps/smemcap.c
+++ b/procps/smemcap.c
@@ -8,7 +8,7 @@
  herein by reference.
 */
 
-//applet:IF_SMEMCAP(APPLET(smemcap, _BB_DIR_USR_BIN, _BB_SUID_DROP))
+//applet:IF_SMEMCAP(APPLET(smemcap, BB_DIR_USR_BIN, BB_SUID_DROP))
 
 //kbuild:lib-$(CONFIG_SMEMCAP) += smemcap.o
 
diff --git a/shell/ash.c b/shell/ash.c
index 6f03ac1c6..298ba3558 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -72,9 +72,9 @@
 # error "Do not even bother, ash will not run on NOMMU machine"
 #endif
 
-//applet:IF_ASH(APPLET(ash, _BB_DIR_BIN, _BB_SUID_DROP))
-//applet:IF_FEATURE_SH_IS_ASH(APPLET_ODDNAME(sh, ash, _BB_DIR_BIN, _BB_SUID_DROP, sh))
-//applet:IF_FEATURE_BASH_IS_ASH(APPLET_ODDNAME(bash, ash, _BB_DIR_BIN, _BB_SUID_DROP, bash))
+//applet:IF_ASH(APPLET(ash, BB_DIR_BIN, BB_SUID_DROP))
+//applet:IF_FEATURE_SH_IS_ASH(APPLET_ODDNAME(sh, ash, BB_DIR_BIN, BB_SUID_DROP, sh))
+//applet:IF_FEATURE_BASH_IS_ASH(APPLET_ODDNAME(bash, ash, BB_DIR_BIN, BB_SUID_DROP, bash))
 
 //kbuild:lib-$(CONFIG_ASH) += ash.o ash_ptr_hack.o shell_common.o
 //kbuild:lib-$(CONFIG_ASH_RANDOM_SUPPORT) += random.o
diff --git a/shell/cttyhack.c b/shell/cttyhack.c
index d1cb7fcc3..d1ac2cd23 100644
--- a/shell/cttyhack.c
+++ b/shell/cttyhack.c
@@ -6,7 +6,7 @@
  */
 #include "libbb.h"
 
-//applet:IF_CTTYHACK(APPLET(cttyhack, _BB_DIR_BIN, _BB_SUID_DROP))
+//applet:IF_CTTYHACK(APPLET(cttyhack, BB_DIR_BIN, BB_SUID_DROP))
 
 //kbuild:lib-$(CONFIG_CTTYHACK) += cttyhack.o
 
diff --git a/shell/hush.c b/shell/hush.c
index 24b9e6efe..6970c50c4 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -105,10 +105,10 @@
 # define PIPE_BUF 4096  /* amount of buffering in a pipe */
 #endif
 
-//applet:IF_HUSH(APPLET(hush, _BB_DIR_BIN, _BB_SUID_DROP))
-//applet:IF_MSH(APPLET(msh, _BB_DIR_BIN, _BB_SUID_DROP))
-//applet:IF_FEATURE_SH_IS_HUSH(APPLET_ODDNAME(sh, hush, _BB_DIR_BIN, _BB_SUID_DROP, sh))
-//applet:IF_FEATURE_BASH_IS_HUSH(APPLET_ODDNAME(bash, hush, _BB_DIR_BIN, _BB_SUID_DROP, bash))
+//applet:IF_HUSH(APPLET(hush, BB_DIR_BIN, BB_SUID_DROP))
+//applet:IF_MSH(APPLET(msh, BB_DIR_BIN, BB_SUID_DROP))
+//applet:IF_FEATURE_SH_IS_HUSH(APPLET_ODDNAME(sh, hush, BB_DIR_BIN, BB_SUID_DROP, sh))
+//applet:IF_FEATURE_BASH_IS_HUSH(APPLET_ODDNAME(bash, hush, BB_DIR_BIN, BB_SUID_DROP, bash))
 
 //kbuild:lib-$(CONFIG_HUSH) += hush.o match.o shell_common.o
 //kbuild:lib-$(CONFIG_HUSH_RANDOM_SUPPORT) += random.o
diff --git a/util-linux/blockdev.c b/util-linux/blockdev.c
index c61116df9..c2fcaee88 100644
--- a/util-linux/blockdev.c
+++ b/util-linux/blockdev.c
@@ -6,7 +6,7 @@
  * Licensed under GPLv2, see file LICENSE in this source tree.
  */
 
-//applet:IF_BLOCKDEV(APPLET(blockdev, _BB_DIR_SBIN, _BB_SUID_DROP))
+//applet:IF_BLOCKDEV(APPLET(blockdev, BB_DIR_SBIN, BB_SUID_DROP))
 
 //kbuild:lib-$(CONFIG_BLOCKDEV) += blockdev.o
 
diff --git a/util-linux/rev.c b/util-linux/rev.c
index e1e004437..3c1b22f09 100644
--- a/util-linux/rev.c
+++ b/util-linux/rev.c
@@ -6,7 +6,7 @@
  * Licensed under GPLv2, see file LICENSE in this source tree.
  */
 
-//applet:IF_REV(APPLET(rev, _BB_DIR_BIN, _BB_SUID_DROP))
+//applet:IF_REV(APPLET(rev, BB_DIR_BIN, BB_SUID_DROP))
 
 //kbuild:lib-$(CONFIG_REV) += rev.o
 
-- 
cgit v1.2.3-55-g6feb


From e9a40e3b91f699c08053d7307bf50b0764811b8e Mon Sep 17 00:00:00 2001
From: Denys Vlasenko <vda.linux@googlemail.com>
Date: Mon, 24 Jan 2011 00:29:55 +0100
Subject: libbb: make ndelay_no/off a bit more clever. +14 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
 include/libbb.h |  6 +++---
 libbb/xfuncs.c  | 18 ++++++++++++------
 2 files changed, 15 insertions(+), 9 deletions(-)

(limited to 'libbb')

diff --git a/include/libbb.h b/include/libbb.h
index 55510316b..6e37b8d04 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -348,9 +348,9 @@ extern char *bb_get_last_path_component_strip(char *path) FAST_FUNC;
 /* "abc/def/" -> "" and it never modifies 'path' */
 extern char *bb_get_last_path_component_nostrip(const char *path) FAST_FUNC;
 
-int ndelay_on(int fd) FAST_FUNC;
-int ndelay_off(int fd) FAST_FUNC;
-int close_on_exec_on(int fd) FAST_FUNC;
+void ndelay_on(int fd) FAST_FUNC;
+void ndelay_off(int fd) FAST_FUNC;
+void close_on_exec_on(int fd) FAST_FUNC;
 void xdup2(int, int) FAST_FUNC;
 void xmove_fd(int, int) FAST_FUNC;
 
diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c
index a02a504b0..23f27516f 100644
--- a/libbb/xfuncs.c
+++ b/libbb/xfuncs.c
@@ -25,19 +25,25 @@
 #include "libbb.h"
 
 /* Turn on nonblocking I/O on a fd */
-int FAST_FUNC ndelay_on(int fd)
+void FAST_FUNC ndelay_on(int fd)
 {
-	return fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK);
+	int flags = fcntl(fd, F_GETFL);
+	if (flags & O_NONBLOCK)
+		return;
+	fcntl(fd, F_SETFL, flags | O_NONBLOCK);
 }
 
-int FAST_FUNC ndelay_off(int fd)
+void FAST_FUNC ndelay_off(int fd)
 {
-	return fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) & ~O_NONBLOCK);
+	int flags = fcntl(fd, F_GETFL);
+	if (!(flags & O_NONBLOCK))
+		return;
+	fcntl(fd, F_SETFL, flags & ~O_NONBLOCK);
 }
 
-int FAST_FUNC close_on_exec_on(int fd)
+void FAST_FUNC close_on_exec_on(int fd)
 {
-	return fcntl(fd, F_SETFD, FD_CLOEXEC);
+	fcntl(fd, F_SETFD, FD_CLOEXEC);
 }
 
 char* FAST_FUNC strncpy_IFNAMSIZ(char *dst, const char *src)
-- 
cgit v1.2.3-55-g6feb


From e3c127d846eb2febbdb86bcf6c0c92622ab98eea Mon Sep 17 00:00:00 2001
From: Chris Rees <utisoft@gmail.com>
Date: Mon, 24 Jan 2011 17:03:36 +0100
Subject: FreeBSD compat

Signed-off-by: Chris Rees <utisoft@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
 include/libbb.h    | 6 ++++++
 include/platform.h | 6 ++++++
 libbb/getpty.c     | 2 +-
 3 files changed, 13 insertions(+), 1 deletion(-)

(limited to 'libbb')

diff --git a/include/libbb.h b/include/libbb.h
index 6e37b8d04..aa7944a5d 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -38,6 +38,12 @@
 #include <time.h>
 #include <unistd.h>
 #include <sys/param.h>
+#ifndef HAVE_CLEARENV
+# define clearenv() do { if (environ) environ[0] = NULL; } while (0)
+#endif
+#ifndef HAVE_FDATASYNC
+# define fdatasync fsync
+#endif
 #ifdef HAVE_MNTENT_H
 # include <mntent.h>
 #endif
diff --git a/include/platform.h b/include/platform.h
index bbbc0a9b6..2bc88c391 100644
--- a/include/platform.h
+++ b/include/platform.h
@@ -10,9 +10,12 @@
 /* Assume all these functions exist by default.  Platforms where it is not
  * true will #undef them below.
  */
+#define HAVE_CLEARENV 1
+#define HAVE_FDATASYNC 1
 #define HAVE_FDPRINTF 1
 #define HAVE_MEMRCHR 1
 #define HAVE_MKDTEMP 1
+#define HAVE_PTSNAME_R 1
 #define HAVE_SETBIT 1
 #define HAVE_SIGHANDLER_T 1
 #define HAVE_STRCASESTR 1
@@ -253,7 +256,10 @@ typedef uint32_t bb__aliased_uint32_t FIX_ALIASING;
 #if (defined __digital__ && defined __unix__) \
  || defined __APPLE__ \
  || defined __FreeBSD__ || defined __OpenBSD__ || defined __NetBSD__
+# undef HAVE_CLEARENV
+# undef HAVE_FDATASYNC
 # undef HAVE_MNTENT_H
+# undef HAVE_PTSNAME_R
 # undef HAVE_SYS_STATFS_H
 # undef HAVE_SIGHANDLER_T
 #else
diff --git a/libbb/getpty.c b/libbb/getpty.c
index ea653b0b6..6a15cff2f 100644
--- a/libbb/getpty.c
+++ b/libbb/getpty.c
@@ -19,7 +19,7 @@ int FAST_FUNC xgetpty(char *line)
 	if (p > 0) {
 		grantpt(p); /* chmod+chown corresponding slave pty */
 		unlockpt(p); /* (what does this do?) */
-#if 0 /* if ptsname_r is not available... */
+#ifndef HAVE_PTSNAME_R
 		const char *name;
 		name = ptsname(p); /* find out the name of slave pty */
 		if (!name) {
-- 
cgit v1.2.3-55-g6feb


From e22af94afb904b8f727b4eaff329e15783ec1cc7 Mon Sep 17 00:00:00 2001
From: Chris Rees <utisoft@gmail.com>
Date: Mon, 24 Jan 2011 17:07:40 +0100
Subject: FreeBSD compat for makedev

Signed-off-by: Chris Rees <utisoft@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
 libbb/makedev.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

(limited to 'libbb')

diff --git a/libbb/makedev.c b/libbb/makedev.c
index cf59e616b..1809fda4e 100644
--- a/libbb/makedev.c
+++ b/libbb/makedev.c
@@ -8,8 +8,14 @@
 
 /* We do not include libbb.h - #define makedev() is there! */
 #include "platform.h"
-#include <features.h>
-#include <sys/sysmacros.h>
+#if !(defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) \
+        || defined(__APPLE__) \
+    )
+# include <features.h>
+# include <sys/sysmacros.h>
+#else
+# include <sys/types.h>
+#endif
 
 #ifdef __GLIBC__
 /* At least glibc has horrendously large inline for this, so wrap it */
-- 
cgit v1.2.3-55-g6feb


From 6b1ce455986ae547b9a0e1e238b90ba2a928599b Mon Sep 17 00:00:00 2001
From: Chris Rees <utisoft@gmail.com>
Date: Mon, 24 Jan 2011 17:10:02 +0100
Subject: FreeBSD compat for match_fstype

Signed-off-by: Chris Rees <utisoft@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
 libbb/Kbuild.src | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

(limited to 'libbb')

diff --git a/libbb/Kbuild.src b/libbb/Kbuild.src
index 0fa145159..a22e70892 100644
--- a/libbb/Kbuild.src
+++ b/libbb/Kbuild.src
@@ -59,7 +59,6 @@ lib-y += llist.o
 lib-y += login.o
 lib-y += make_directory.o
 lib-y += makedev.o
-lib-y += match_fstype.o
 lib-y += hash_md5_sha.o
 # Alternative (disabled) MD5 implementation
 #lib-y += hash_md5prime.o
@@ -120,6 +119,8 @@ lib-y += xgethostbyname.o
 lib-y += xreadlink.o
 lib-y += xrealloc_vector.o
 
+lib-$(CONFIG_PLATFORM_LINUX) += match_fstype.o
+
 lib-$(CONFIG_FEATURE_UTMP) += utmp.o
 
 # A mix of optimizations (why build stuff we know won't be used)
-- 
cgit v1.2.3-55-g6feb


From 975c7141831aa6bf8d9abcafd1e5a9e108a910fc Mon Sep 17 00:00:00 2001
From: Denys Vlasenko <vda.linux@googlemail.com>
Date: Mon, 24 Jan 2011 23:53:12 +0100
Subject: nicer looking ifdef in libbb/makedev.c

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
 include/libbb.h |  2 +-
 libbb/makedev.c | 19 ++++++++++---------
 2 files changed, 11 insertions(+), 10 deletions(-)

(limited to 'libbb')

diff --git a/include/libbb.h b/include/libbb.h
index e5988236d..968bdcf5a 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -1297,7 +1297,7 @@ void add_to_ino_dev_hashtable(const struct stat *statbuf, const char *name) FAST
 void reset_ino_dev_hashtable(void) FAST_FUNC;
 #ifdef __GLIBC__
 /* At least glibc has horrendously large inline for this, so wrap it */
-unsigned long long bb_makedev(unsigned int major, unsigned int minor) FAST_FUNC;
+unsigned long long bb_makedev(unsigned major, unsigned minor) FAST_FUNC;
 #undef makedev
 #define makedev(a,b) bb_makedev(a,b)
 #endif
diff --git a/libbb/makedev.c b/libbb/makedev.c
index 1809fda4e..06c4039a3 100644
--- a/libbb/makedev.c
+++ b/libbb/makedev.c
@@ -8,22 +8,23 @@
 
 /* We do not include libbb.h - #define makedev() is there! */
 #include "platform.h"
-#if !(defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) \
-        || defined(__APPLE__) \
-    )
+
+/* Different Unixes want different headers for makedev */
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) \
+ || defined(__APPLE__)
+# include <sys/types.h>
+#else
 # include <features.h>
 # include <sys/sysmacros.h>
-#else
-# include <sys/types.h>
 #endif
 
 #ifdef __GLIBC__
-/* At least glibc has horrendously large inline for this, so wrap it */
+/* At least glibc has horrendously large inline for this, so wrap it. */
 /* uclibc people please check - do we need "&& !__UCLIBC__" above? */
 
-/* suppress gcc "no previous prototype" warning */
-unsigned long long FAST_FUNC bb_makedev(unsigned int major, unsigned int minor);
-unsigned long long FAST_FUNC bb_makedev(unsigned int major, unsigned int minor)
+/* Suppress gcc "no previous prototype" warning */
+unsigned long long FAST_FUNC bb_makedev(unsigned major, unsigned minor);
+unsigned long long FAST_FUNC bb_makedev(unsigned major, unsigned minor)
 {
 	return makedev(major, minor);
 }
-- 
cgit v1.2.3-55-g6feb


From 9b3b9790b32d440eb89af5edda70a66b1829e861 Mon Sep 17 00:00:00 2001
From: Davide Cavalca <davide@geexbox.org>
Date: Tue, 25 Jan 2011 02:26:03 +0100
Subject: add ENABLE_FEATURE_SYSTEMD and use it in syslogd

Signed-off-by: Davide Cavalca <davide@geexbox.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
 include/libbb.h         |  6 +++++
 libbb/systemd_support.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++
 sysklogd/syslogd.c      |  5 ++++
 3 files changed, 73 insertions(+)
 create mode 100644 libbb/systemd_support.c

(limited to 'libbb')

diff --git a/include/libbb.h b/include/libbb.h
index 968bdcf5a..32e25a8d4 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -1217,6 +1217,12 @@ extern void selinux_preserve_fcontext(int fdesc) FAST_FUNC;
 #endif
 extern void selinux_or_die(void) FAST_FUNC;
 
+
+/* systemd support */
+#define SD_LISTEN_FDS_START 3
+int sd_listen_fds(void);
+
+
 /* setup_environment:
  * if chdir pw->pw_dir: ok: else if to_tmp == 1: goto /tmp else: goto / or die
  * if clear_env = 1: cd(pw->pw_dir), clear environment, then set
diff --git a/libbb/systemd_support.c b/libbb/systemd_support.c
new file mode 100644
index 000000000..981296dbb
--- /dev/null
+++ b/libbb/systemd_support.c
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2011 Davide Cavalca <davide@geexbox.org>
+ *
+ * Based on http://cgit.freedesktop.org/systemd/tree/src/sd-daemon.c
+ * Copyright 2010 Lennart Poettering
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+#include "libbb.h"
+
+//config:config FEATURE_SYSTEMD
+//config:	bool "Enable systemd support"
+//config:	default y
+//config:	help
+//config:	  If you plan to use busybox daemons on a system where daemons
+//config:	  are controlled by systemd, enable this option.
+//config:	  If you don't use systemd, it is still safe to enable it,
+//config:	  but yhe downside is increased code size.
+
+//kbuild:lib-$(CONFIG_FEATURE_SYSTEMD) += systemd_support.o
+
+int sd_listen_fds(void)
+{
+	const char *e;
+	int n;
+	int fd;
+
+	e = getenv("LISTEN_PID");
+	if (!e)
+		return 0;
+	n = xatoi_positive(e);
+	/* Is this for us? */
+	if (getpid() != (pid_t) n)
+		return 0;
+
+	e = getenv("LISTEN_FDS");
+	if (!e)
+		return 0;
+	n = xatoi_positive(e);
+	for (fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + n; fd++)
+		close_on_exec_on(fd);
+
+	return n;
+}
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
index fb7309538..24cab3b6c 100644
--- a/sysklogd/syslogd.c
+++ b/sysklogd/syslogd.c
@@ -512,6 +512,11 @@ static NOINLINE int create_socket(void)
 	int sock_fd;
 	char *dev_log_name;
 
+#if ENABLE_FEATURE_SYSTEMD
+	if (sd_listen_fds() == 1)
+		return SD_LISTEN_FDS_START;
+#endif
+
 	memset(&sunx, 0, sizeof(sunx));
 	sunx.sun_family = AF_UNIX;
 
-- 
cgit v1.2.3-55-g6feb


From 8d0e0cdadf726beab28ccdc7d69738c1534e1f74 Mon Sep 17 00:00:00 2001
From: Denys Vlasenko <vda.linux@googlemail.com>
Date: Tue, 25 Jan 2011 23:21:46 +0100
Subject: move utmp.h include to libbb.h

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
 Config.in              | 20 ++++++++++----------
 coreutils/who.c        |  1 -
 include/libbb.h        |  3 +++
 init/halt.c            |  1 -
 init/init.c            |  3 ---
 libbb/messages.c       | 11 ++++++-----
 libbb/utmp.c           |  1 -
 loginutils/adduser.c   |  6 +++---
 loginutils/getty.c     |  3 ---
 loginutils/login.c     |  3 ---
 miscutils/last.c       |  1 -
 miscutils/last_fancy.c |  1 -
 miscutils/runlevel.c   |  1 -
 miscutils/wall.c       |  1 -
 networking/telnetd.c   |  4 ----
 shell/ash.c            |  2 ++
 16 files changed, 24 insertions(+), 38 deletions(-)

(limited to 'libbb')

diff --git a/Config.in b/Config.in
index 1109b1016..0ae48e9fe 100644
--- a/Config.in
+++ b/Config.in
@@ -284,10 +284,19 @@ config FEATURE_CLEAN_UP
 	  Don't enable this unless you have a really good reason to clean
 	  things up manually.
 
+config FEATURE_UTMP
+	bool "Support utmp file"
+	default y
+	help
+	  The file /var/run/utmp is used to track who is currently logged in.
+	  With this option on, certain applets (getty, login, telnetd etc)
+	  will create and delete entries there.
+	  "who" applet requires this option.
+
 config FEATURE_WTMP
 	bool "Support wtmp file"
 	default y
-	select FEATURE_UTMP
+	depends on FEATURE_UTMP
 	help
 	  The file /var/run/wtmp is used to track when users have logged into
 	  and logged out of the system.
@@ -295,15 +304,6 @@ config FEATURE_WTMP
 	  will append new entries there.
 	  "last" applet requires this option.
 
-config FEATURE_UTMP
-	bool "Support utmp file"
-	default y
-	help
-	  The file /var/run/utmp is used to track who is currently logged in.
-	  With this option on, certain applets (getty, login, telnetd etc)
-	  will create and delete entries there.
-	  "who" applet requires this option.
-
 config FEATURE_PIDFILE
 	bool "Support writing pidfiles"
 	default y
diff --git a/coreutils/who.c b/coreutils/who.c
index 8384d9534..ab1e30fc8 100644
--- a/coreutils/who.c
+++ b/coreutils/who.c
@@ -19,7 +19,6 @@
 /* BB_AUDIT SUSv3 _NOT_ compliant -- missing options -b, -d, -l, -m, -p, -q, -r, -s, -t, -T, -u; Missing argument 'file'.  */
 
 #include "libbb.h"
-#include <utmp.h>
 
 static void idle_string(char *str6, time_t t)
 {
diff --git a/include/libbb.h b/include/libbb.h
index 32e25a8d4..182b47988 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -50,6 +50,9 @@
 # include <selinux/flask.h>
 # include <selinux/av_permissions.h>
 #endif
+#if ENABLE_FEATURE_UTMP
+# include <utmp.h>
+#endif
 #if ENABLE_LOCALE_SUPPORT
 # include <locale.h>
 #else
diff --git a/init/halt.c b/init/halt.c
index f853ba4a1..a84a72747 100644
--- a/init/halt.c
+++ b/init/halt.c
@@ -74,7 +74,6 @@
 
 #if ENABLE_FEATURE_WTMP
 #include <sys/utsname.h>
-#include <utmp.h>
 
 static void write_wtmp(void)
 {
diff --git a/init/init.c b/init/init.c
index d8e180746..586e34a18 100644
--- a/init/init.c
+++ b/init/init.c
@@ -115,9 +115,6 @@
 #ifdef __linux__
 #include <linux/vt.h>
 #endif
-#if ENABLE_FEATURE_UTMP
-# include <utmp.h> /* DEAD_PROCESS */
-#endif
 #include "reboot.h" /* reboot() constants */
 
 /* Used only for sanitizing purposes in set_sane_term() below. On systems where
diff --git a/libbb/messages.c b/libbb/messages.c
index 66e466ffa..2acbc3bca 100644
--- a/libbb/messages.c
+++ b/libbb/messages.c
@@ -48,15 +48,16 @@ const int const_int_1 = 1;
  * and it will end up in bss */
 const int const_int_0 = 0;
 
-#include <utmp.h>
+#if ENABLE_FEATURE_WTMP
 /* This is usually something like "/var/adm/wtmp" or "/var/log/wtmp" */
 const char bb_path_wtmp_file[] ALIGN1 =
-#if defined _PATH_WTMP
+# if defined _PATH_WTMP
 	_PATH_WTMP;
-#elif defined WTMP_FILE
+# elif defined WTMP_FILE
 	WTMP_FILE;
-#else
-#error unknown path to wtmp file
+# else
+#  error unknown path to wtmp file
+# endif
 #endif
 
 /* We use it for "global" data via *(struct global*)&bb_common_bufsiz1.
diff --git a/libbb/utmp.c b/libbb/utmp.c
index 2bf9c11f2..09443fb6c 100644
--- a/libbb/utmp.c
+++ b/libbb/utmp.c
@@ -7,7 +7,6 @@
  * Licensed under GPLv2, see file LICENSE in this source tree.
  */
 #include "libbb.h"
-#include <utmp.h>
 
 static void touch(const char *filename)
 {
diff --git a/loginutils/adduser.c b/loginutils/adduser.c
index 1a9949e97..d938b80f3 100644
--- a/loginutils/adduser.c
+++ b/loginutils/adduser.c
@@ -78,11 +78,11 @@ static void addgroup_wrapper(struct passwd *p, const char *group_name)
 	free(cmd);
 }
 
-static void passwd_wrapper(const char *login) NORETURN;
+static void passwd_wrapper(const char *login_name) NORETURN;
 
-static void passwd_wrapper(const char *login)
+static void passwd_wrapper(const char *login_name)
 {
-	BB_EXECLP("passwd", "passwd", login, NULL);
+	BB_EXECLP("passwd", "passwd", login_name, NULL);
 	bb_error_msg_and_die("can't execute passwd, you must set password manually");
 }
 
diff --git a/loginutils/getty.c b/loginutils/getty.c
index becff5c78..b71d68a1f 100644
--- a/loginutils/getty.c
+++ b/loginutils/getty.c
@@ -24,9 +24,6 @@
 
 #include "libbb.h"
 #include <syslog.h>
-#if ENABLE_FEATURE_UTMP
-# include <utmp.h> /* LOGIN_PROCESS */
-#endif
 #ifndef IUCLC
 # define IUCLC 0
 #endif
diff --git a/loginutils/login.c b/loginutils/login.c
index c285b45a1..952b3aadd 100644
--- a/loginutils/login.c
+++ b/loginutils/login.c
@@ -4,9 +4,6 @@
  */
 #include "libbb.h"
 #include <syslog.h>
-#if ENABLE_FEATURE_UTMP
-# include <utmp.h> /* USER_PROCESS */
-#endif
 #include <sys/resource.h>
 
 #if ENABLE_SELINUX
diff --git a/miscutils/last.c b/miscutils/last.c
index fec5b70a8..12457b157 100644
--- a/miscutils/last.c
+++ b/miscutils/last.c
@@ -8,7 +8,6 @@
  */
 
 #include "libbb.h"
-#include <utmp.h>
 
 /* NB: ut_name and ut_user are the same field, use only one name (ut_user)
  * to reduce confusion */
diff --git a/miscutils/last_fancy.c b/miscutils/last_fancy.c
index 7e69fc281..7e61b7691 100644
--- a/miscutils/last_fancy.c
+++ b/miscutils/last_fancy.c
@@ -8,7 +8,6 @@
  */
 
 #include "libbb.h"
-#include <utmp.h>
 
 /* NB: ut_name and ut_user are the same field, use only one name (ut_user)
  * to reduce confusion */
diff --git a/miscutils/runlevel.c b/miscutils/runlevel.c
index 363e45049..7024361e7 100644
--- a/miscutils/runlevel.c
+++ b/miscutils/runlevel.c
@@ -12,7 +12,6 @@
  * initially busyboxified by Bernhard Reutner-Fischer
  */
 #include "libbb.h"
-#include <utmp.h>
 
 int runlevel_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
 int runlevel_main(int argc UNUSED_PARAM, char **argv)
diff --git a/miscutils/wall.c b/miscutils/wall.c
index eecfc166b..0a2b89e5e 100644
--- a/miscutils/wall.c
+++ b/miscutils/wall.c
@@ -7,7 +7,6 @@
  */
 
 #include "libbb.h"
-#include <utmp.h>
 
 int wall_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
 int wall_main(int argc UNUSED_PARAM, char **argv)
diff --git a/networking/telnetd.c b/networking/telnetd.c
index 07c6a6a73..eec4417ca 100644
--- a/networking/telnetd.c
+++ b/networking/telnetd.c
@@ -31,10 +31,6 @@
 #endif
 #include <arpa/telnet.h>
 
-#if ENABLE_FEATURE_UTMP
-# include <utmp.h> /* LOGIN_PROCESS */
-#endif
-
 
 struct tsession {
 	struct tsession *next;
diff --git a/shell/ash.c b/shell/ash.c
index 298ba3558..0bcbf9028 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -4944,6 +4944,8 @@ stoppedjobs(void)
  * Code for dealing with input/output redirection.
  */
 
+#undef EMPTY
+#undef CLOSED
 #define EMPTY -2                /* marks an unused slot in redirtab */
 #define CLOSED -3               /* marks a slot of previously-closed fd */
 
-- 
cgit v1.2.3-55-g6feb