Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 07dfca2e authored by The Android Open Source Project's avatar The Android Open Source Project
Browse files

merge from open-source master

Change-Id: I58175b59d0121deaac90375be1dc720889eaf339
parents 0fd96df4 8884bf02
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -62,6 +62,22 @@ static bool isSourceNewer(const struct stat* pSrcStat, const struct stat* pDstSt
           (pSrcStat->st_size != pDstStat->st_size);
}

/*
 * Returns true if the source file has high resolution modification
 * date.  Cygwin doesn't support st_mtim in normal build, so always
 * return false.
 */
static bool isHiresMtime(const struct stat* pSrcStat)
{
#if defined(WIN32_EXE) || defined(USE_MINGW)
    return 0;
#elif defined(MACOSX_RSRC)
    return pSrcStat->st_mtimespec.tv_nsec > 0;
#else
    return pSrcStat->st_mtim.tv_nsec > 0;
#endif
}

/*
 * Returns true if the source and destination files are actually the
 * same thing.  We detect this by checking the inode numbers, which seems
@@ -151,6 +167,8 @@ static int setPermissions(const char* dst, const struct stat* pSrcStat, unsigned
         */
        ut.actime = pSrcStat->st_atime;
        ut.modtime = pSrcStat->st_mtime;
        if (isHiresMtime(pSrcStat))
            ut.modtime += 1;
        if (utime(dst, &ut) != 0) {
            DBUG(("---   unable to set timestamps on '%s': %s\n",
                dst, strerror(errno)));