Eric Blake wrote: > According to Jim Meyering on 11/18/2009 6:58 AM: >>>> which suggests this code in test-futimens.h >>>> needs to handle ENOTDIR: >>> Actually, this was a regression, caused when you disabled the futimens >>> fallback on the 8th. >> >> Really? >> This seems to be the change you're talking about: >> http://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=26c5fd742f9136e2ddbd4 > > Yep. > >> How could that cause a problem? > > Because utimens.c no longer has a way to set fd timestamps on Solaris, but > skips all code paths that set errno to ENOSYS, leaving errno stuck at > whatever it was prior to the futimes call.
I see it now. The point is that on Solaris, what I removed was *not* an invalid use of futimesat. They add a sentence making the NULL file name valid: int futimesat(int fildes, const char *path, const struct timeval times[2]); ... If path is a null pointer, futimesat() sets the access and modification times on the file referenced by fildes.