libbb: more compact API for bb_parse_mode()

function                                             old     new   delta
make_device                                         2182    2188      +6
parse_command                                       1440    1443      +3
parse_params                                        1497    1499      +2
install_main                                         773     769      -4
mkdir_main                                           168     160      -8
getoptscmd                                           641     632      -9
builtin_umask                                        158     147     -11
bb_parse_mode                                        431     410     -21
umaskcmd                                             286     258     -28
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/6 up/down: 11/-81)            Total: -70 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/coreutils/mkdir.c b/coreutils/mkdir.c
index 864edfb..6f7b004 100644
--- a/coreutils/mkdir.c
+++ b/coreutils/mkdir.c
@@ -71,8 +71,8 @@
 #endif
 	opt = getopt32(argv, "m:pv" IF_SELINUX("Z:"), &smode IF_SELINUX(,&scontext));
 	if (opt & 1) {
-		mode_t mmode = 0777;
-		if (!bb_parse_mode(smode, &mmode)) {
+		mode_t mmode = bb_parse_mode(smode, 0777);
+		if (mmode == (mode_t)-1) {
 			bb_error_msg_and_die("invalid mode '%s'", smode);
 		}
 		mode = mmode;