From: Paul Eggert Date: Fri, 24 Dec 2010 08:06:16 +0000 (-0800) Subject: tests: port test-fdutimensat.c to Solaris 8 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6147723cd9000c4e840205fec3e64b0a5a5c1d04;p=pspp tests: port test-fdutimensat.c to Solaris 8 * tests/test-fdutimensat.c (do_fdutimens): Don't assume fdutimensat works with a nonnegative fd and AT_SYMLINK_NOFOLLOW. On Solaris 8, it fails with errno == ENOSYS, because there is no futimens (so it can't use the fd), and there is no lutimens (so it can't implement AT_SYMLINK_NOFOLLOW on symlinks). --- diff --git a/ChangeLog b/ChangeLog index f53bcb4c84..97909feba9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2010-12-23 Paul Eggert + tests: port test-fdutimensat.c to Solaris 8 + * tests/test-fdutimensat.c (do_fdutimens): Don't assume + fdutimensat works with a nonnegative fd and AT_SYMLINK_NOFOLLOW. + On Solaris 8, it fails with errno == ENOSYS, because there is no + futimens (so it can't use the fd), and there is no lutimens (so it + can't implement AT_SYMLINK_NOFOLLOW on symlinks). + vsnprintf: make more consistent with snprintf; doc fixes * doc/posix-functions/snprintf.texi (snprintf): The workaround for diff --git a/tests/test-fdutimensat.c b/tests/test-fdutimensat.c index d94667af91..9f66cc60ef 100644 --- a/tests/test-fdutimensat.c +++ b/tests/test-fdutimensat.c @@ -48,12 +48,17 @@ static int do_fdutimens (char const *name, struct timespec const times[2]) { int result; + int nofollow_result; + int nofollow_errno; int fd = openat (dfd, name, O_WRONLY); if (fd < 0) fd = openat (dfd, name, O_RDONLY); errno = 0; + nofollow_result = fdutimensat (fd, dfd, name, times, AT_SYMLINK_NOFOLLOW); + nofollow_errno = errno; result = fdutimensat (fd, dfd, name, times, 0); - ASSERT (fdutimensat (fd, dfd, name, times, AT_SYMLINK_NOFOLLOW) == result); + ASSERT (result == nofollow_result + || (nofollow_result == -1 && nofollow_errno == ENOSYS)); if (0 <= fd) { int saved_errno = errno;