adduser: optional support for long options. +110 bytes.
authorDenis Vlasenko <vda.linux@googlemail.com>
Fri, 15 Feb 2008 15:17:23 +0000 (15:17 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Fri, 15 Feb 2008 15:17:23 +0000 (15:17 -0000)
closes bug 2134.

loginutils/Config.in
loginutils/adduser.c

index 6f2702e950f2584a10decfd727e312504741d416..6ee154c6103eeeabb73a90ac69277c2b81bddc5e 100644 (file)
@@ -88,6 +88,13 @@ config ADDUSER
        help
          Utility for creating a new user account.
 
+config FEATURE_ADDUSER_LONG_OPTIONS
+       bool "Enable long options"
+       default n
+       depends on ADDUSER && GETOPT_LONG
+       help
+         Support long options for the adduser applet.
+
 config DELUSER
        bool "deluser"
        default n
index a859f4b0c4688aeaf1bed590b30cf0ef31cbcaf7..7b5283e9932779402d94af009cb4d47bc76919d9 100644 (file)
@@ -66,6 +66,19 @@ static void passwd_wrapper(const char *login)
        bb_error_msg_and_die("cannot execute %s, you must set password manually", prog);
 }
 
+#if ENABLE_FEATURE_ADDUSER_LONG_OPTIONS
+static const char adduser_longopts[] ALIGN1 =
+               "home\0"                Required_argument "h"
+               "gecos\0"               Required_argument "g"
+               "shell\0"               Required_argument "s"
+               "ingroup\0"             Required_argument "G"
+               "disabled-password\0"   No_argument       "D"
+               "empty-password\0"      No_argument       "D"
+               "system\0"              No_argument       "S"
+               "no-create-home\0"      No_argument       "H"
+               ;
+#endif
+
 /*
  * adduser will take a login_name as its first parameter.
  * home, shell, gecos:
@@ -78,6 +91,10 @@ int adduser_main(int argc, char **argv)
        const char *usegroup = NULL;
        FILE *file;
 
+#if ENABLE_FEATURE_ADDUSER_LONG_OPTIONS
+       applet_long_options = adduser_longopts;
+#endif
+
        /* got root? */
        if (geteuid()) {
                bb_error_msg_and_die(bb_msg_perm_denied_are_you_root);