[PATCH] Bug 16442 - Missing futimes() on Solaris
Игорь Пашев
pashev.igor at gmail.com
Mon Jul 1 13:48:33 PDT 2013
http://llvm.org/bugs/show_bug.cgi?id=16442
Solaris does not provide futimes(), OS X does not have futimens().
futimens() is POSIX.1-2008 standard, futimes() is a BSD extension.
glibc-based systems have both, illumos has futimens().
autotools files should be regenerated.
Index: lib/Support/Unix/PathV2.inc
===================================================================
--- lib/Support/Unix/PathV2.inc (revision 184862)
+++ lib/Support/Unix/PathV2.inc (working copy)
@@ -445,11 +445,21 @@
}
error_code setLastModificationAndAccessTime(int FD, TimeValue Time) {
+#if HAVE_FUTIMENS
+ timespec Times[2];
+ Times[0].tv_sec = Time.toPosixTime();
+ Times[0].tv_nsec = 0;
+ Times[1] = Times[0];
+ if (::futimens(FD, Times))
+#elif HAVE_FUTIMES
timeval Times[2];
Times[0].tv_sec = Time.toPosixTime();
Times[0].tv_usec = 0;
Times[1] = Times[0];
if (::futimes(FD, Times))
+#else
+#error Missing futimes() and futimens()
+#endif
return error_code(errno, system_category());
return error_code::success();
}
Index: cmake/config-ix.cmake
===================================================================
--- cmake/config-ix.cmake (revision 184862)
+++ cmake/config-ix.cmake (working copy)
@@ -136,6 +136,8 @@
check_symbol_exists(exp math.h HAVE_EXP)
check_symbol_exists(exp2 math.h HAVE_EXP2)
check_symbol_exists(exp10 math.h HAVE_EXP10)
+check_symbol_exists(futimens sys/stat.h HAVE_FUTIMENS)
+check_symbol_exists(futimes sys/time.h HAVE_FUTIMES)
if( HAVE_SETJMP_H )
check_symbol_exists(longjmp setjmp.h HAVE_LONGJMP)
check_symbol_exists(setjmp setjmp.h HAVE_SETJMP)
Index: autoconf/configure.ac
===================================================================
--- autoconf/configure.ac (revision 184862)
+++ autoconf/configure.ac (working copy)
@@ -1612,6 +1612,7 @@
AC_CHECK_FUNCS([strerror strerror_r setenv arc4random ])
AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ])
AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp writev])
+AC_CHECK_FUNCS([futimes futimens])
AC_C_PRINTF_A
AC_FUNC_RAND48
More information about the llvm-commits
mailing list