1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-04 17:47:26 +03:00

s3: keep subsecond times on cross-filesystem moves and don't follow links

This commit is contained in:
Björn Jacke 2009-12-09 02:06:17 +01:00
parent b6174662df
commit fd5855608f

View File

@ -540,6 +540,27 @@ static int copy_reg(const char *source, const char *dest)
return -1;
/* Try to copy the old file's modtime and access time. */
#if defined(HAVE_UTIMENSAT)
{
struct timespec ts[2];
ts[0] = source_stats.st_ex_atime;
ts[1] = source_stats.st_ex_mtime;
utimensat(AT_FDCWD, dest, ts, AT_SYMLINK_NOFOLLOW);
}
#elif defined(HAVE_UTIMES)
{
struct timeval tv[2];
tv[0] = convert_timespec_to_timeval(source_stats.st_ex_atime);
tv[1] = convert_timespec_to_timeval(source_stats.st_ex_mtime);
#ifdef HAVE_LUTIMES
lutimes(dest, tv);
#else
utimes(dest, tv);
#endif
}
#elif defined(HAVE_UTIME)
{
struct utimbuf tv;
@ -547,6 +568,7 @@ static int copy_reg(const char *source, const char *dest)
tv.modtime = convert_timespec_to_time_t(source_stats.st_ex_mtime);
utime(dest, &tv);
}
#endif
if (unlink (source) == -1)
return -1;