acp: Ensure dst mtime always greater or equal to src mtime

When copying files from file systems that support high resolution
mtime, we should not truncating the nsec part. Instead we should
increase the dst mtime by one sec to prevent dst mtime to become less
than src mtime.

Change-Id: I5cab1edd4b9783ec0e3ceb04ed833d8bbba00b19
This commit is contained in:
Kan-Ru Chen 2010-07-05 17:04:37 +08:00
parent 45038e062d
commit a67bc11058
1 changed files with 6 additions and 0 deletions

View File

@ -151,6 +151,12 @@ static int setPermissions(const char* dst, const struct stat* pSrcStat, unsigned
*/
ut.actime = pSrcStat->st_atime;
ut.modtime = pSrcStat->st_mtime;
#ifdef MACOSX_RSRC
if (pSrcStat->st_mtimespec.tv_nsec > 0)
#else
if (pSrcStat->st_mtim.tv_nsec > 0)
#endif
ut.modtime += 1;
if (utime(dst, &ut) != 0) {
DBUG(("--- unable to set timestamps on '%s': %s\n",
dst, strerror(errno)));