* Use libc::UTIME_NOW in touch when updating time to now
* Explicit libc import to satisfy clippy
* Fix location of cfg in touch
* Add cfg gate to libc import to satisfy clippy on windows
* Change cfg gates in touch near libc::UTIME_NOW from unix to linux
---------
Co-authored-by: Sylvestre Ledru <sylvestre@debian.org>
Minor manual cleanup - inlined many format args. This makes the code a bit more readable, and helps spot a few inefficiencies and possible bugs. Note that `&foo` in a `format!` parameter results in a 6% extra performance cost, and does not get inlined by the compiler (yet).
When using `touch -t` with a 2 digit year, the year is interpreted as
a relative year to 2000.
When the year is 68 or less, it should be interpreted as 20xx.
When the year is 69 or more, it should be interpreted as 19xx.
This is the behavior of GNU `touch`.
fixes gh-7280
Arguably 2 digits years should be deprecated as we
are already closer to 2069, than 1969.
Support obsolete form of timestamp argument for old POSIX versions. In
summary, when older versions of POSIX are used and the first positional
argument looks like a date and time, then treat it as a timestamp
instead of as a filename. For example, before this commit
_POSIX2_VERSION=199209
POSIXLY_CORRECT=1
touch 01010000 11111111
would create two files, `01010000` and `11111111`. After this commit,
the first argument is interpreted as a date and time (in this case,
midnight on January 1 of the current year) and that date and time are
set on the file named `11111111`.
Fixes#7180.