Beispiel #1
0
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);
}
Beispiel #2
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();
	}
}