the last mod time of the wtmp file (in practice, the time it was last
rotated, which is when it begins) instead of the current time, which
wasn't ever particularly useful. PR 39444.
it to print "wtmp[x] begins" at the end, instead of knowing where to look
in the final utmp buffer to get a final timestamp out. This is both tidier
and fixes a problem with wtmpx files, which is that if the header record
is missing (which it seems to be on my machines) it would fetch the wrong
time out, and if you happened to have a one-record wtmp file it would use
the current time instead. This change restores the traditional behavior
of printing the time of the oldest record in the file, and if no records
are present to use the current time.
It might be a bug that wtmpx files don't seem to have the header
record they supposedly ought to.
- Use EXIT_SUCCESS/EXIT_FAILURE instead of 0/1.
- Additional check for regular file.
- Use pread() instead of lseek() + read().
- Check for partial read to prevent out-of-bounds memory access.
- Added FIXME to onintr(): This is no proper signal handler albeit might
not really matter here.