*: shrink: use Vladimir's "o+" specifier instead of xatou(opt_param)

function                                             old     new   delta
getopt32                                            1370    1385     +15
sulogin_main                                         490     494      +4
realpath_main                                         84      86      +2
sleep_main                                            76      77      +1
mt_main                                              256     257      +1
printenv_main                                         75      74      -1
fdformat_main                                        546     545      -1
usleep_main                                           44      42      -2
setlogcons_main                                       77      75      -2
ed_main                                             2654    2649      -5
deallocvt_main                                        69      64      -5
addgroup_main                                        373     368      -5
mkfs_minix_main                                     2989    2982      -7
tail_main                                           1221    1213      -8
sv_main                                             1254    1241     -13
du_main                                              348     328     -20
tftp_main                                            325     302     -23
split_main                                           581     558     -23
nc_main                                             1000     977     -23
diff_main                                            891     868     -23
arping_main                                         1797    1770     -27
ls_main                                              893     847     -46
od_main                                             2797    2750     -47
readprofile_main                                    1944    1895     -49
tcpudpsvd_main                                      1973    1922     -51
udhcpc_main                                         2590    2513     -77
grep_main                                            824     722    -102
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 5/22 up/down: 23/-560)         Total: -537 bytes
   text    data     bss     dec     hex filename
 796973     658    7428  805059   c48c3 busybox_old
 796479     662    7420  804561   c46d1 busybox_unstripped

diff --git a/util-linux/fdformat.c b/util-linux/fdformat.c
index c4f97ae..eac7b15 100644
--- a/util-linux/fdformat.c
+++ b/util-linux/fdformat.c
@@ -41,7 +41,7 @@
 #define FD_FILL_BYTE 0xF6 /* format fill byte. */
 
 int fdformat_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int fdformat_main(int argc, char **argv)
+int fdformat_main(int argc ATTRIBUTE_UNUSED, char **argv)
 {
 	int fd, n, cyl, read_bytes, verify;
 	unsigned char *data;
@@ -49,9 +49,7 @@
 	struct floppy_struct param;
 	struct format_descr descr;
 
-	if (argc < 2) {
-		bb_show_usage();
-	}
+	opt_complementary = "=1"; /* must have 1 param */
 	verify = !getopt32(argv, "n");
 	argv += optind;
 
diff --git a/util-linux/mkfs_minix.c b/util-linux/mkfs_minix.c
index 3fbdc20..60031a5 100644
--- a/util-linux/mkfs_minix.c
+++ b/util-linux/mkfs_minix.c
@@ -627,7 +627,7 @@
 	unsigned opt;
 	char *tmp;
 	struct stat statbuf;
-	char *str_i, *str_n;
+	char *str_i;
 	char *listfile = NULL;
 
 	INIT_G();
@@ -643,13 +643,13 @@
 		bb_error_msg_and_die("bad inode size");
 #endif
 
-	opt = getopt32(argv, "ci:l:n:v", &str_i, &listfile, &str_n);
+	opt_complementary = "n+"; /* -n N */
+	opt = getopt32(argv, "ci:l:n:v", &str_i, &listfile, &G.namelen);
 	argv += optind;
 	//if (opt & 1) -c
 	if (opt & 2) G.req_nr_inodes = xatoul(str_i); // -i
 	//if (opt & 4) -l
 	if (opt & 8) { // -n
-		G.namelen = xatoi_u(str_n);
 		if (G.namelen == 14) G.magic = MINIX1_SUPER_MAGIC;
 		else if (G.namelen == 30) G.magic = MINIX1_SUPER_MAGIC2;
 		else bb_show_usage();
diff --git a/util-linux/readprofile.c b/util-linux/readprofile.c
index ef78659..e25d07d 100644
--- a/util-linux/readprofile.c
+++ b/util-linux/readprofile.c
@@ -8,7 +8,7 @@
  */
 
 /*
- * 1999-02-22 Arkadiusz Mi¶kiewicz <misiek@pld.ORG.PL>
+ * 1999-02-22 Arkadiusz Mickiewicz <misiek@pld.ORG.PL>
  * - added Native Language Support
  * 1999-09-01 Stephane Eranian <eranian@cello.hpl.hp.com>
  * - 64bit clean patch
@@ -45,7 +45,7 @@
 int readprofile_main(int argc ATTRIBUTE_UNUSED, char **argv)
 {
 	FILE *map;
-	const char *mapFile, *proFile, *mult = 0;
+	const char *mapFile, *proFile;
 	unsigned long indx = 1;
 	size_t len;
 	uint64_t add0 = 0;
@@ -55,37 +55,49 @@
 	char fn_name[S_LEN], next_name[S_LEN];   /* current and next name */
 	char mapline[S_LEN];
 	char mode[8];
-	int optAll = 0, optInfo = 0, optReset = 0;
-	int optVerbose = 0, optNative = 0;
-	int optBins = 0, optSub = 0;
 	int maplineno = 1;
 	int header_printed;
+	int multiplier = 0;
+	unsigned opt;
+	enum {
+		OPT_M = (1 << 0),
+		OPT_m = (1 << 1),
+		OPT_p = (1 << 2),
+		OPT_n = (1 << 3),
+		OPT_a = (1 << 4),
+		OPT_b = (1 << 5),
+		OPT_s = (1 << 6),
+		OPT_i = (1 << 7),
+		OPT_r = (1 << 8),
+		OPT_v = (1 << 9),
+	};
+#define optMult    (opt & OPT_M)
+#define optNative  (opt & OPT_n)
+#define optAll     (opt & OPT_a)
+#define optBins    (opt & OPT_b)
+#define optSub     (opt & OPT_s)
+#define optInfo    (opt & OPT_i)
+#define optReset   (opt & OPT_r)
+#define optVerbose (opt & OPT_v)
 
 #define next (current^1)
 
 	proFile = defaultpro;
 	mapFile = defaultmap;
 
-	opt_complementary = "nn:aa:bb:ss:ii:rr:vv";
-	getopt32(argv, "M:m:p:nabsirv",
-			&mult, &mapFile, &proFile,
-			&optNative, &optAll, &optBins, &optSub,
-			&optInfo, &optReset, &optVerbose);
+	opt_complementary = "M+"; /* -M N */
+	opt = getopt32(argv, "M:m:p:nabsirv", &multiplier, &mapFile, &proFile);
 
-	if (optReset || mult) {
-		int multiplier, fd, to_write;
+	if (opt & (OPT_M|OPT_r)) { /* mult or reset, or both */
+		int fd, to_write;
 
 		/*
 		 * When writing the multiplier, if the length of the write is
 		 * not sizeof(int), the multiplier is not changed
 		 */
-		if (mult) {
-			multiplier = xatoi_u(mult);
-			to_write = sizeof(int);
-		} else {
-			multiplier = 0;
+		to_write = sizeof(int);
+		if (!optMult)
 			to_write = 1;	/* sth different from sizeof(int) */
-		}
 
 		fd = xopen(defaultpro, O_WRONLY);
 		xwrite(fd, &multiplier, to_write);
@@ -187,8 +199,9 @@
 		if (optBins) {
 			if (optVerbose || this > 0)
 				printf("  total\t\t\t\t%u\n", this);
-		} else if ((this || optAll) &&
-			   (fn_len = next_add-fn_add) != 0) {
+		} else if ((this || optAll)
+		        && (fn_len = next_add-fn_add) != 0
+		) {
 			if (optVerbose)
 				printf("%016llx %-40s %6i %8.4f\n", fn_add,
 				       fn_name, this, this/(double)fn_len);
diff --git a/util-linux/setarch.c b/util-linux/setarch.c
index dbc02de..1f979a7 100644
--- a/util-linux/setarch.c
+++ b/util-linux/setarch.c
@@ -12,7 +12,7 @@
 #include "libbb.h"
 
 int setarch_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int setarch_main(int ATTRIBUTE_UNUSED argc, char **argv)
+int setarch_main(int argc ATTRIBUTE_UNUSED, char **argv)
 {
 	int pers = -1;
 
diff --git a/util-linux/swaponoff.c b/util-linux/swaponoff.c
index 48f6f4e..beefac0 100644
--- a/util-linux/swaponoff.c
+++ b/util-linux/swaponoff.c
@@ -59,11 +59,11 @@
 }
 
 int swap_on_off_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int swap_on_off_main(int argc, char **argv)
+int swap_on_off_main(int argc ATTRIBUTE_UNUSED, char **argv)
 {
 	int ret;
 
-	if (argc == 1)
+	if (!argv[1])
 		bb_show_usage();
 
 	ret = getopt32(argv, "a");