summaryrefslogtreecommitdiffstats
path: root/libutil
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2012-01-05 10:40:24 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2012-01-05 10:40:24 +0000
commit5c5e67d83f6be45507a76cb75af552ccc3576daf (patch)
tree6d61075b02c2a22866511ab16ef446e3a66609f2 /libutil
parentcda8e1027a7b18b2894b7422ef611093e5e2a3da (diff)
downloadpw-darwin-5c5e67d83f6be45507a76cb75af552ccc3576daf.tar.gz
pw-darwin-5c5e67d83f6be45507a76cb75af552ccc3576daf.tar.zst
pw-darwin-5c5e67d83f6be45507a76cb75af552ccc3576daf.zip
Add new pw_make_v7 to make a passwd line (in v7 format) out of a struct passwd
while here, fix missing parentheses of the return statement of pw_make. Approved by: des (mentor)
Diffstat (limited to 'libutil')
-rw-r--r--libutil/libutil.h1
-rw-r--r--libutil/pw_util.c16
2 files changed, 16 insertions, 1 deletions
diff --git a/libutil/libutil.h b/libutil/libutil.h
index dea14cf..47896c1 100644
--- a/libutil/libutil.h
+++ b/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/libutil/pw_util.c b/libutil/pw_util.c
index 1068eff..5cd27b1 100644
--- a/libutil/pw_util.c
+++ b/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);
}
/*