Detect file modification properly by using tv_nsec.

POSIX 2008 standardizes st_mtim, meaning we can simply use nanosecond
precision to detect file modification.

MFC after:	2 weeks
This commit is contained in:
Ed Schouten 2012-02-10 13:40:32 +00:00
parent 8fac9b7b7d
commit e6ad3d22f4
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=231383
2 changed files with 3 additions and 9 deletions

View File

@ -347,7 +347,8 @@ pw_edit(int notsetuid)
sigprocmask(SIG_SETMASK, &oldsigset, NULL); sigprocmask(SIG_SETMASK, &oldsigset, NULL);
if (stat(tempname, &st2) == -1) if (stat(tempname, &st2) == -1)
return (-1); return (-1);
return (st1.st_mtime != st2.st_mtime); return (st1.st_mtim.tv_sec != st2.st_mtim.tv_sec ||
st1.st_mtim.tv_nsec != st2.st_mtim.tv_nsec);
} }
/* /*

View File

@ -28,7 +28,7 @@
.\" @(#)vipw.8 8.1 (Berkeley) 6/6/93 .\" @(#)vipw.8 8.1 (Berkeley) 6/6/93
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd June 6, 1993 .Dd February 10, 2011
.Dt VIPW 8 .Dt VIPW 8
.Os .Os
.Sh NAME .Sh NAME
@ -110,10 +110,3 @@ The
.Nm .Nm
utility appeared in utility appeared in
.Bx 4.0 . .Bx 4.0 .
.Sh BUGS
The mechanism for checking for password file modifications requires that
.Ev EDITOR
run for at least one second.
Non-interactive editor scripts should invoke
.Xr sleep 1
or equivalent to ensure this happens.