static const char default_passwd[] = "x";
static const char default_gecos[] = "Linux User,,,";
static const char default_home_prefix[] = "/home";
-static const char default_shell[] = "/bin/sh";
#ifdef CONFIG_FEATURE_SHADOWPASSWDS
/* shadow in use? */
if ((p->pw_uid > max) || (p->pw_uid < min))
p->pw_uid = min;
- /* stuff to do:
+ /* stuff to do:
* make sure login isn't taken;
* find free uid and gid;
*/
{
char *cmd;
- bb_xasprintf(&cmd, "addgroup -g %d %s", gid, login);
+ cmd = bb_xasprintf("addgroup -g %d \"%s\"", gid, login);
system(cmd);
free(cmd);
}
}
}
-#define SETPASS 1
-#define MAKEHOME 4
+#define SETPASS (1 << 4)
+#define MAKEHOME (1 << 6)
/*
* adduser will take a login_name as its first parameter.
*
* home
* shell
- * gecos
+ * gecos
*
* can be customized via command-line parameters.
* ________________________________________________________________________ */
const char *login;
const char *gecos = default_gecos;
const char *home = NULL;
- const char *shell = default_shell;
+ const char *shell = DEFAULT_SHELL;
const char *usegroup = NULL;
int flags;
int setpass = 1;
if (usegroup) {
/* Add user to a group that already exists */
- struct group *g;
-
- g = getgrnam(usegroup);
- if (g == NULL)
- bb_error_msg_and_die("group %s does not exist", usegroup);
-
- pw.pw_gid = g->gr_gid;
+ pw.pw_gid = bb_xgetgrnam(usegroup);
+ /* exits on error */
}
/* grand finale */