From ba4ec70529c0fa9cf4dc797176dbae1a2c949dbc Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sat, 29 Jan 2011 10:59:14 +0100 Subject: s3: Fix bug 7940 -- fall back for utimes calls There are systems where ./configure has detected advanced utimes calls which are then not available on other kernels. We should do a proper fallback. Autobuild-User: Volker Lendecke Autobuild-Date: Tue Feb 1 22:37:35 CET 2011 on sn-devel-104 --- source3/modules/vfs_default.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'source3/modules') diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index 9cca349413..698e745d59 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -786,7 +786,11 @@ static int vfswrap_ntimes(vfs_handle_struct *handle, } else { result = utimensat(AT_FDCWD, smb_fname->base_name, NULL, 0); } -#elif defined(HAVE_UTIMES) + if (!((result == -1) && (errno == ENOSYS))) { + goto out; + } +#endif +#if defined(HAVE_UTIMES) if (ft != NULL) { struct timeval tv[2]; tv[0] = convert_timespec_to_timeval(ft->atime); @@ -795,7 +799,11 @@ static int vfswrap_ntimes(vfs_handle_struct *handle, } else { result = utimes(smb_fname->base_name, NULL); } -#elif defined(HAVE_UTIME) + if (!((result == -1) && (errno == ENOSYS))) { + goto out; + } +#endif +#if defined(HAVE_UTIME) if (ft != NULL) { struct utimbuf times; times.actime = convert_timespec_to_time_t(ft->atime); @@ -804,10 +812,12 @@ static int vfswrap_ntimes(vfs_handle_struct *handle, } else { result = utime(smb_fname->base_name, NULL); } -#else + if (!((result == -1) && (errno == ENOSYS))) { + goto out; + } +#endif errno = ENOSYS; result = -1; -#endif out: END_PROFILE(syscall_ntimes); -- cgit