On systems without utime and without a utimes function capable of dealing with a NULL struct utimbuf* argument, this utime replacement could -- in unusual circumstances -- leak a file descriptor. Include <unistd.h> and <errno.h>. (utime_null): Be sure to close `fd' and to preserve errno.