Make vipw error message less cryptic
Unable to find an editor, vipw would give this error: # env EDITOR=fnord vipw vipw: pw_edit(): No such file or directory vigr or crontab do better: # env EDITOR=fnord crontab -e crontab: no crontab for root - using an empty one crontab: fnord: No such file or directory crontab: "fnord" exited with status 1 After this change, vipw behaves more like vigr or crontab: # env EDITOR=fnord vipw vipw: fnord: No such file or directory vipw: "fnord" exited with status 1 Reviewed by: rpokala, emaste MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D25369
This commit is contained in:
parent
39c64ed6d1
commit
830efe5539
@ -308,12 +308,13 @@ pw_edit(int notsetuid)
|
|||||||
sigaction(SIGQUIT, &sa_quit, NULL);
|
sigaction(SIGQUIT, &sa_quit, NULL);
|
||||||
sigprocmask(SIG_SETMASK, &oldsigset, NULL);
|
sigprocmask(SIG_SETMASK, &oldsigset, NULL);
|
||||||
if (notsetuid) {
|
if (notsetuid) {
|
||||||
(void)setgid(getgid());
|
if (setgid(getgid()) == -1)
|
||||||
(void)setuid(getuid());
|
err(1, "setgid");
|
||||||
|
if (setuid(getuid()) == -1)
|
||||||
|
err(1, "setuid");
|
||||||
}
|
}
|
||||||
errno = 0;
|
|
||||||
execlp(editor, editor, tempname, (char *)NULL);
|
execlp(editor, editor, tempname, (char *)NULL);
|
||||||
_exit(errno);
|
err(1, "%s", editor);
|
||||||
default:
|
default:
|
||||||
/* parent */
|
/* parent */
|
||||||
break;
|
break;
|
||||||
@ -327,7 +328,9 @@ pw_edit(int notsetuid)
|
|||||||
break;
|
break;
|
||||||
} else if (WIFSTOPPED(pstat)) {
|
} else if (WIFSTOPPED(pstat)) {
|
||||||
raise(WSTOPSIG(pstat));
|
raise(WSTOPSIG(pstat));
|
||||||
} else if (WIFEXITED(pstat) && WEXITSTATUS(pstat) == 0) {
|
} else if (WIFEXITED(pstat)) {
|
||||||
|
if (WEXITSTATUS(pstat) != 0)
|
||||||
|
errx(1, "\"%s\" exited with status %d", editor, WEXITSTATUS(pstat));
|
||||||
editpid = -1;
|
editpid = -1;
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user