diff options
author | Todd C. Miller <millert@cvs.openbsd.org> | 2007-11-17 16:09:30 +0000 |
---|---|---|
committer | Todd C. Miller <millert@cvs.openbsd.org> | 2007-11-17 16:09:30 +0000 |
commit | aac9512fc5b3f9778521d63eb8530e533bc65447 (patch) | |
tree | f408fa0c9c5919a54aa108e6475e5503f3f23ce4 /usr.sbin/vipw | |
parent | 9b4dacab5d1ff741fa40e94687d11526501458a5 (diff) |
Deal with timespec vs. timeval precision issues. Fixes a problem
where the "no changes" case was not properly detected due to timespec
supporting nanosec resolution but timeval only supporting microsec
resolution. OK deraadt@
Diffstat (limited to 'usr.sbin/vipw')
-rw-r--r-- | usr.sbin/vipw/vipw.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/usr.sbin/vipw/vipw.c b/usr.sbin/vipw/vipw.c index 3b8debb7e57..012800221e6 100644 --- a/usr.sbin/vipw/vipw.c +++ b/usr.sbin/vipw/vipw.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vipw.c,v 1.13 2003/06/02 23:36:55 millert Exp $ */ +/* $OpenBSD: vipw.c,v 1.14 2007/11/17 16:09:29 millert Exp $ */ /* * Copyright (c) 1987, 1993, 1994 @@ -119,6 +119,9 @@ copyfile(int from, int to, struct stat *sb) TIMESPEC_TO_TIMEVAL(&tv[0], &sb->st_atimespec); TIMESPEC_TO_TIMEVAL(&tv[1], &sb->st_mtimespec); (void)futimes(to, tv); + + /* Make tv_nsec the same precision as tv_usec so it compares OK. */ + TIMEVAL_TO_TIMESPEC(&tv[1], &sb->st_mtimespec); } void |