Next up, time.3. As before, changes by section, with "I don't knows" at the end of the change list in each section.
NAME - get "the" time of day. SYNOPSIS - Not a fan of the "tloc" variable name. Use "now" as we do in other pages to reinforce the meaning of its contents. DESCRIPTION - Clean this up. In particular, format the Epoch date like we do in other pages. We don't need two paragraphs, either. - Mention that we call gettimeofday(2). Not strictly necessary, but useful for people tracing system calls to know what the library is doing. Part of me wants to tell the reader not to use time() to measure elapsed time. Then again, time() is low-res so it isn't misused nearly as often as gettimeofday(2). I'm also leaning toward omitting the full description of the UTC clock and its behavior. Not completely sure. RETURN VALUES - There are no relevant error cases, remove them. The underlying system call, gettimeofday(2), will not fail in this context unless the stack is corrupted, which we cannot account for anyway. - Just say that time() always succeeds. I cribbed this bit from another page to put something in the Return Values section, but the return value is already described in the Description. Maybe we don't need this section at all anymore? STANDARDS - This section is missing. Our time() conforms to the latest standard. HISTORY - Rework this a bit. - Note the fate of the historical time() system call. Index: time.3 =================================================================== RCS file: /cvs/src/lib/libc/gen/time.3,v retrieving revision 1.16 diff -u -p -r1.16 time.3 --- time.3 29 Jan 2015 01:46:30 -0000 1.16 +++ time.3 30 Jul 2021 17:59:37 -0000 @@ -36,52 +36,54 @@ .Os .Sh NAME .Nm time -.Nd get time of day +.Nd get the time of day .Sh SYNOPSIS .In time.h .Ft time_t -.Fn time "time_t *tloc" +.Fn time "time_t *now" .Sh DESCRIPTION The .Fn time -function returns the value of time in seconds since 0 hours, 0 minutes, -0 seconds, January 1, 1970, Coordinated Universal Time (UTC). +function returns the the number of seconds elapsed since +Jan 1 1970 00:00:00 UTC. +This value is also written to +.Fa now +unless +.Fa now +is +.Dv NULL . .Pp -A copy of the time value may be saved to the area indicated by the -pointer -.Fa tloc . -If -.Fa tloc -is a null pointer, no value is stored. +This version of +.Fn time +is implemented with +.Xr gettimeofday 2 . .Sh RETURN VALUES -Upon successful completion, +The .Fn time -returns the value of time. -Otherwise a value of -.Po Fa time_t Pc Ns -1 -is returned and the global variable -.Va errno -is set to indicate the error. -.Sh ERRORS -The following error codes may be set in -.Va errno : -.Bl -tag -width Er -.It Bq Er EFAULT -An argument address referenced invalid memory. -.El +function is always successful, +and no return value is reserved to indicate an error. .Sh SEE ALSO .Xr clock_gettime 2 , .Xr gettimeofday 2 , .Xr ctime 3 +.Sh STANDARDS +The +.Fn time +function conforms to +.St -p1003.1-2008 . .Sh HISTORY A .Fn time system call first appeared in -.At v1 -and used to return time in sixtieths of a second in 32 bits, -which was to guarantee a crisis every 2.26 years. -Since -.At v6 , -.Fn time -scale was changed to seconds, extending the pre-crisis stagnation -period up to a total of 68 years. +.At v1 . +This version counted time in sixtieths of a second with a 32-bit return value, +ensuring an integer overflow crisis every 2.26 years. +In +.At v6 +the granularity of the return value was reduced to whole seconds, +delaying the aforementioned crisis until 2038. +In +.Bx 4.1c +the function was moved out of the kernel into the C standard library and +reimplemented with +.Xr gettimeofday 2 .