summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/libutil/libutil.h1
-rw-r--r--lib/libutil/pw_util.c16
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/libutil/libutil.h b/lib/libutil/libutil.h
index dea14cf..47896c1 100644
--- a/lib/libutil/libutil.h
+++ b/lib/libutil/libutil.h
@@ -144,6 +144,7 @@ int pw_equal(const struct passwd *_pw1, const struct passwd *_pw2);
void pw_fini(void);
int pw_init(const char *_dir, const char *_master);
char *pw_make(const struct passwd *_pw);
+char *pw_make_v7(const struct passwd *_pw);
int pw_mkdb(const char *_user);
int pw_lock(void);
struct passwd *pw_scan(const char *_line, int _flags);
diff --git a/lib/libutil/pw_util.c b/lib/libutil/pw_util.c
index 1068eff..5cd27b1 100644
--- a/lib/libutil/pw_util.c
+++ b/lib/libutil/pw_util.c
@@ -406,7 +406,21 @@ pw_make(const struct passwd *pw)
pw->pw_passwd, (uintmax_t)pw->pw_uid, (uintmax_t)pw->pw_gid,
pw->pw_class, (uintmax_t)pw->pw_change, (uintmax_t)pw->pw_expire,
pw->pw_gecos, pw->pw_dir, pw->pw_shell);
- return line;
+ return (line);
+}
+
+/*
+ * Make a passwd line (in v7 format) out of a struct passwd
+ */
+char *
+pw_make_v7(const struct passwd *pw)
+{
+ char *line;
+
+ asprintf(&line, "%s:*:%ju:%ju:%s:%s:%s", pw->pw_name,
+ (uintmax_t)pw->pw_uid, (uintmax_t)pw->pw_gid,
+ pw->pw_gecos, pw->pw_dir, pw->pw_shell);
+ return (line);
}
/*
OpenPOWER on IntegriCloud