summaryrefslogtreecommitdiffstats
path: root/pw/pwupd.c
diff options
context:
space:
mode:
Diffstat (limited to 'pw/pwupd.c')
-rw-r--r--pw/pwupd.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/pw/pwupd.c b/pw/pwupd.c
index 10a6066..baaf102 100644
--- a/pw/pwupd.c
+++ b/pw/pwupd.c
@@ -92,14 +92,14 @@ pwdb(char *arg,...)
args[i] = NULL;
if ((pid = fork()) == -1) /* Error (errno set) */
- i = -1;
+ i = errno;
else if (pid == 0) { /* Child */
execv(args[0], args);
_exit(1);
} else { /* Parent */
waitpid(pid, &i, 0);
- if ((i = WEXITSTATUS(i)) != 0)
- errno = EIO; /* set SOMETHING */
+ if (WEXITSTATUS(i))
+ i = EIO;
}
return i;
}
@@ -161,18 +161,21 @@ pw_update(struct passwd * pwd, char const * user, int mode)
*pwbuf = '\0';
else
fmtpwentry(pwbuf, pwd, PWF_PASSWD);
- if ((rc = fileupdate(getpwpath(_PASSWD), 0644, pwbuf, pfx, l, mode)) != 0) {
+
+ rc = fileupdate(getpwpath(_PASSWD), 0644, pwbuf, pfx, l, mode);
+ if (rc == 0) {
/*
* Then the master.passwd file
*/
if (pwd != NULL)
fmtpwentry(pwbuf, pwd, PWF_MASTER);
- if ((rc = fileupdate(getpwpath(_MASTERPASSWD), 0644, pwbuf, pfx, l, mode)) != 0) {
+ rc = fileupdate(getpwpath(_MASTERPASSWD), 0644, pwbuf, pfx, l, mode);
+ if (rc != 0) {
if (mode == UPD_DELETE)
- rc = pwdb(NULL) == 0;
+ rc = pwdb(NULL);
else
- rc = pwdb("-u", user, NULL) == 0;
+ rc = pwdb("-u", user, NULL);
}
}
}