main() { register int pfd, tfd; struct stat begin, end; pw_init(); pfd = pw_lock(); tfd = pw_tmp(); copyfile(pfd, tfd); (void)close(tfd); for (;;) { if (stat(tempname, &begin)) pw_error(tempname, 1, 1); pw_edit(0); if (stat(tempname, &end)) pw_error(tempname, 1, 1); if (begin.st_mtime == end.st_mtime) { (void)fprintf(stderr, "vipw: no changes made\n"); pw_error((char *)NULL, 0, 0); } if (pw_mkdb()) break; pw_prompt(); } exit(0); }
void edit(char *tempname, struct passwd *pw) { struct stat begin, end; for (;;) { if (stat(tempname, &begin)) (*Pw_error)(tempname, 1, 1); pw_edit(1, tempname); if (stat(tempname, &end)) (*Pw_error)(tempname, 1, 1); if (begin.st_mtime == end.st_mtime) { warnx("no changes made"); (*Pw_error)(NULL, 0, 0); } if (verify(tempname, pw)) break; #ifdef YP if (use_yp) yppw_prompt(); else #endif pw_prompt(); } }