Skip to content

SystemTools: Fix Touch to avoid requiring file ownership

Isaiah requested to merge ihnorton/kwsys:fix_cm_16526 into master

SystemTools::Touch should only require +w file permissions. The previous implementation used stat to get the current time, and then passed that time to one of utimensat/utimes/utime. However, utimes/utimensat only permit an arbitrary-time argument to be passed by the file owner.

Therefore, per the docs, we pass NULL for the times argument to utimes and utimensat, to indicate using the current time. This is permitted for any UID with +w on the file.

Fallback usage of utime is removed as unnecessary.

Issue: cmake/cmake#16526 (closed)
Topic-rename: SystemTools-simplify-touch

Edited by Brad King

Merge request reports