It appears that the utimes(2) call chases symbolic links rather than modifying the time of the link itself. In the man page, one of the errors returnable is "[ELOOP]" -- "Too many symbolic links were encountered in translating the pathname." So how do you change the times of a symbolic link?