summaryrefslogtreecommitdiffstats
path: root/pw
diff options
context:
space:
mode:
authorSheldon Hearn <sheldonh@FreeBSD.org>1999-08-30 10:35:38 +0000
committerSheldon Hearn <sheldonh@FreeBSD.org>1999-08-30 10:35:38 +0000
commit8cbb37abd7d5a889c42a0305a6749a8fb20365f8 (patch)
treea1c61be43ff5752b414ad987ac2a5ddfca93314e /pw
parentd07e0690e1f62b9653262c9ad68f18d6ca54f7f7 (diff)
downloadpw-darwin-8cbb37abd7d5a889c42a0305a6749a8fb20365f8.tar.gz
pw-darwin-8cbb37abd7d5a889c42a0305a6749a8fb20365f8.tar.zst
pw-darwin-8cbb37abd7d5a889c42a0305a6749a8fb20365f8.zip
Only do a full pwd_mkdb for deletions; other operations may use the -u
option as an optimization. PR: 13346 Submitted by: Neil Blakey-Milner <nbm@rucus.ru.ac.za>
Diffstat (limited to 'pw')
-rw-r--r--pw/pwupd.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/pw/pwupd.c b/pw/pwupd.c
index 05fb087..10a6066 100644
--- a/pw/pwupd.c
+++ b/pw/pwupd.c
@@ -168,8 +168,12 @@ pw_update(struct passwd * pwd, char const * user, int mode)
*/
if (pwd != NULL)
fmtpwentry(pwbuf, pwd, PWF_MASTER);
- if ((rc = fileupdate(getpwpath(_MASTERPASSWD), 0644, pwbuf, pfx, l, mode)) != 0)
- rc = pwdb(NULL) == 0;
+ if ((rc = fileupdate(getpwpath(_MASTERPASSWD), 0644, pwbuf, pfx, l, mode)) != 0) {
+ if (mode == UPD_DELETE)
+ rc = pwdb(NULL) == 0;
+ else
+ rc = pwdb("-u", user, NULL) == 0;
+ }
}
}
return rc;