diff options
| author | Baptiste Daroussin <bapt@FreeBSD.org> | 2015-06-03 20:48:28 +0000 |
|---|---|---|
| committer | Baptiste Daroussin <bapt@FreeBSD.org> | 2015-06-03 20:48:28 +0000 |
| commit | 972cf03ed9ac980bb8a66dbbcce59fd4f2837e82 (patch) | |
| tree | 2a29081eaa0e2501c9edc132199a1aa8fe090d87 /lib/libutil/pw_util.c | |
| parent | 46c3d3ac99dbc1b05ddab13d897bf3c41d785206 (diff) | |
Notes
Diffstat (limited to 'lib/libutil/pw_util.c')
| -rw-r--r-- | lib/libutil/pw_util.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/lib/libutil/pw_util.c b/lib/libutil/pw_util.c index befd1fb02d701..b0bdad15daba7 100644 --- a/lib/libutil/pw_util.c +++ b/lib/libutil/pw_util.c @@ -242,14 +242,36 @@ pw_tmp(int mfd) return (tfd); } +int +pw_mkdb(const char *user) +{ + + return (pw_mkdb2(user, PWDB_NATIVE)); +} + /* * Regenerate the password database. */ int -pw_mkdb(const char *user) +pw_mkdb2(const char *user, int endian) { int pstat; pid_t pid; + const char *arg; + + switch (endian) { + case PWDB_NATIVE: + arg = "-p"; + break; + case PWDB_LE: + arg = "-pL"; + break; + case PWDB_BE: + arg = "-pB"; + break; + default: + return (-1); + } (void)fflush(stderr); switch ((pid = fork())) { @@ -258,10 +280,10 @@ pw_mkdb(const char *user) case 0: /* child */ if (user == NULL) - execl(_PATH_PWD_MKDB, "pwd_mkdb", "-p", + execl(_PATH_PWD_MKDB, "pwd_mkdb", arg, "-d", passwd_dir, tempname, (char *)NULL); else - execl(_PATH_PWD_MKDB, "pwd_mkdb", "-p", + execl(_PATH_PWD_MKDB, "pwd_mkdb", arg, "-d", passwd_dir, "-u", user, tempname, (char *)NULL); _exit(1); |
