last_patch89 from vodz:

    Manuel,

    I rewrite bb_getopt_ulflags() function for more universal usage.
    My version support now:
    - options with arguments (optional arg as GNU extension also)
    - complementaly and/or incomplementaly and/or incongruously and/or list
    options
    - long_opt (all applets may have long option, add supporting is trivial)
    This realisation full compatibile from your version.
    Code size grow 480 bytes, but only coreutils/* over compensate this size
    after using new function. Last patch reduced over 800 bytes and not full
    applied to all. "mkdir" and "mv" applets have long_opt now for demonstrate
    trivial addition support long_opt with usage new bb_getopt_ulflags().
    Complementaly and/or incomplementaly and/or incongruously and/or list options
    logic is not trivial, but new "cut" and "grep" applets using this logic
    for examples with full demostrating. New "grep" applet reduced over 300
    bytes.

    Mark,
    Also. I removed bug from "grep" applet.
    $ echo a b | busybox grep -e a b
    a b
    a b
    But right is printing one only.

    --w
    vodz
diff --git a/coreutils/env.c b/coreutils/env.c
index db13b3a..eb761e9 100644
--- a/coreutils/env.c
+++ b/coreutils/env.c
@@ -44,20 +44,13 @@
 {
 	char **ep, *p;
 	char *cleanenv[1] = { NULL };
-	int ch;
+	unsigned long opt;
 
-	while ((ch = getopt(argc, argv, "iu:")) > 0) {
-		switch(ch) {
-		case 'i':
+	opt = bb_getopt_ulflags(argc, argv, "iu:", &p);
+	if(opt & 1)
 			environ = cleanenv;
-			break;
-		case 'u':
-			unsetenv(optarg);
-			break;
-		default:
-			bb_show_usage();
-		}
-	}
+	if(opt & 2)
+		unsetenv(p);
 
 	argv += optind;