rework long option handling. saves ~1.2k

function                                             old     new   delta
tar_longopts                                           -     222    +222
static.udhcpc_longopts                                 -     192    +192
start_stop_daemon_longopts                             -     150    +150
getopt32                                            1045    1185    +140
static.wget_longopts                                   -     111    +111
static.od_longopts                                     -     105    +105
getopt_longopts                                        -      96     +96
install_longopts                                       -      67     +67
ipcalc_longopts                                        -      63     +63
static.hwclock_longopts                                -      54     +54
ftpgetput_longopts                                     -      52     +52
static.dumpleases_longopts                             -      32     +32
env_longopts                                           -      31     +31
runparts_longopts                                      -      30     +30
mv_longopts                                            -      24     +24
mkdir_longopts                                         -      19     +19
find_pair                                            164     180     +16
bb_null_long_options                                   -      16     +16
setconsole_longopts                                    -      10     +10
display_speed                                         91      98      +7
collect_blk                                          467     474      +7
show_color                                             4       1      -3
ls_main                                              913     904      -9
bb_default_long_options                               16       -     -16
ls_color_opt                                          32      10     -22
setconsole_long_options                               32       -     -32
arith                                               2077    2030     -47
mv_long_options                                       48       -     -48
mkdir_long_options                                    48       -     -48
env_long_options                                      48       -     -48
static.options                                       248     184     -64
runparts_long_options                                 80       -     -80
ftpgetput_long_options                                96       -     -96
static.hwclock_long_options                          112       -    -112
install_long_options                                 112       -    -112
static.long_options                                  144       -    -144
static.wget_long_options                             160       -    -160
longopts                                             160       -    -160
static.arg_options                                   304       -    -304
tar_long_options                                     320       -    -320
long_options                                         384       -    -384
------------------------------------------------------------------------------
(add/remove: 17/15 grow/shrink: 4/5 up/down: 1444/-2209)     Total: -765 bytes
   text    data     bss     dec     hex filename
 782618    1328   11900  795846   c24c6 busybox_old
 781354    1328   11900  794582   c1fd6 busybox_unstripped


diff --git a/archival/tar.c b/archival/tar.c
index bcbb7a9..d03b18b 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -715,45 +715,44 @@
 	OPT_NOPRESERVE_PERM = 1 << OPTBIT_NOPRESERVE_PERM, // no-same-permissions
 };
 #if ENABLE_FEATURE_TAR_LONG_OPTIONS
-static const struct option tar_long_options[] = {
-	{ "list",               0,  NULL,   't' },
-	{ "extract",            0,  NULL,   'x' },
-	{ "directory",          1,  NULL,   'C' },
-	{ "file",               1,  NULL,   'f' },
-	{ "to-stdout",          0,  NULL,   'O' },
-	{ "same-permissions",   0,  NULL,   'p' },
-	{ "verbose",            0,  NULL,   'v' },
-	{ "keep-old",           0,  NULL,   'k' },
+static const char tar_longopts[] =
+	"list\0"                No_argument       "t"
+	"extract\0"             No_argument       "x"
+	"directory\0"           Required_argument "C"
+	"file\0"                Required_argument "f"
+	"to-stdout\0"           No_argument       "O"
+	"same-permissions\0"    No_argument       "p"
+	"verbose\0"             No_argument       "v"
+	"keep-old\0"            No_argument       "k"
 # if ENABLE_FEATURE_TAR_CREATE
-	{ "create",             0,  NULL,   'c' },
-	{ "dereference",        0,  NULL,   'h' },
+	"create\0"              No_argument       "c"
+	"dereference\0"         No_argument       "h"
 # endif
 # if ENABLE_FEATURE_TAR_BZIP2
-	{ "bzip2",              0,  NULL,   'j' },
+	"bzip2\0"               No_argument       "j"
 # endif
 # if ENABLE_FEATURE_TAR_LZMA
-	{ "lzma",               0,  NULL,   'a' },
+	"lzma\0"                No_argument       "a"
 # endif
 # if ENABLE_FEATURE_TAR_FROM
-	{ "files-from",         1,  NULL,   'T' },
-	{ "exclude-from",       1,  NULL,   'X' },
+	"files-from\0"          Required_argument "T"
+	"exclude-from\0"        Required_argument "X"
 # endif
 # if ENABLE_FEATURE_TAR_GZIP
-	{ "gzip",               0,  NULL,   'z' },
+	"gzip\0"                No_argument       "z"
 # endif
 # if ENABLE_FEATURE_TAR_COMPRESS
-	{ "compress",           0,  NULL,   'Z' },
+	"compress\0"            No_argument       "Z"
 # endif
-	{ "no-same-owner",      0,  NULL,   0xfd },
-	{ "no-same-permissions",0,  NULL,   0xfe },
+	"no-same-owner\0"       No_argument       "\xfd"
+	"no-same-permissions\0" No_argument       "\xfe"
 	/* --exclude takes next bit position in option mask, */
 	/* therefore we have to either put it _after_ --no-same-perm */
 	/* or add OPT[BIT]_EXCLUDE before OPT[BIT]_NOPRESERVE_OWN */
 # if ENABLE_FEATURE_TAR_FROM
-	{ "exclude",            1,  NULL,   0xff },
+	"exclude\0"             Required_argument "\xff"
 # endif
-	{ 0,                    0, 0, 0 }
-};
+	"\0";
 #endif
 
 int tar_main(int argc, char **argv);
@@ -787,7 +786,7 @@
 		USE_FEATURE_TAR_CREATE("c--tx:t--cx:x--ct") // mutually exclusive
 		SKIP_FEATURE_TAR_CREATE("t--x:x--t"); // mutually exclusive
 #if ENABLE_FEATURE_TAR_LONG_OPTIONS
-	applet_long_options = tar_long_options;
+	applet_long_options = tar_longopts;
 #endif
 	opt = getopt32(argc, argv,
 		"txC:f:Opvk"