HomeFreeBSD

date: Add support for nanoseconds

Description

date: Add support for nanoseconds

This patch introduces support for a conversion specification for
nanoseconds.

The format of %N is meant to be compatible with that of GNU date.

The nanoseconds conversion specification is implemented directly in
date(1) instead of libc (in strftime(3)) to avoid introducing
non-standard functions to libc at this time and modifying struct tm.

Apart from introducing the nanoseconds conversion specification, this
patch brings the following changes:

  • The "ns" format for ISO 8061 dates is now unlocked. E.g., date -Ins prints: 2024-04-22T12:20:28,763742224+02:00
  • The -r flag when fed a file is now aware of the nanosecond part of the last modification time.
  • date(1) is now able to set the time with nanosecond precision. It is not possible as of now to do that by specifying nanoseconds directly via the command-line arguments. Instead, the -r flag can be used.
  • date(1) is now using the clock_gettime(3) family of functions instead of ctime(3) family of functions where possible.

Reviewed by: des, markj
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D44905

(cherry picked from commit eeb04a736cb9c07d191af886e25d5f198824658e)

Details

Provenance
0mpAuthored on Apr 21 2024, 9:25 PM
Reviewer
des
Differential Revision
D44905: date: Add support for nanoseconds
Parents
rGa7096a69efcd: date(1): Grammar fixes
Branches
Unknown
Tags
Unknown