Thanks for adding that functionality to gnulib. I prepared a patch to have GNU tar use it, but found one more problem. fdutimensat uses this signature:
fdutimensat (int dir, char const *file, int fd, [ other args ] ) whereas the similar function in GNU tar uses the following order instead. fdutimensat (int fd, int dir, char const *file, [ other args ] ) The GNU tar convention is clearer, since it reflects the semantics better: try FD first, and use that if it works; otherwise fall back on DIR+FILE. Could we please switch to this order, while we're changing the API anyway? I'll do the gnulib gruntwork if that helps. (And I apologize for not earlier noticing this lack of conformance to Leibniz's principles of notation design. :-)