[Toybox] [CLEANUP] last part 1
Rob Landley
rob at landley.net
Sun May 11 06:34:51 PDT 2014
I keep writing up little notes to self and then forgetting to post 'em.
This was from my first pass over "last". (Not a huge amount of cleanup,
most of it was research.)
Currently, toys.h includes utmpx.h but not utmp.h. The reason is that
utmpx.h is in posix-2008, and utmp.h isn't:
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/utmpx.h.html
It turns out, utmp.h is deprecated, replaced by utmpx.h:
http://lists.freebsd.org/pipermail/freebsd-current/2010-January/014893.html
And there's example code on how to use the new posix interface in the
programming book written by Michael Kerrisk (the man page maintainer), ala:
http://man7.org/tlpi/code/online/dist/loginacct/dump_utmpx.c.html
It _also_ turns out that in Linux, struct utmp and utmpx are the same
thing. So the accessor functions changed, but the actual file format
didn't. Odd.
Let's gloss over that for the moment, and focus on cleaning up the code
that's there. First problem, my netbook doesn't list any logged in users:
$ last
wtmp begins Thu May 1 04:52:20 2014
Hmmm... how about if I do a fresh login:
$ last
root tty4 Fri May 9 05:32 still logged in
root tty4 Fri May 9 05:32 - 05:32 (00:00)
wtmp begins Fri May 9 05:32:02 2014
Ok, I can work with that.
Going through main():
GLOBALS start zeroed so we don't need to assign NULL to TT.list.
&tm[1] is just tm+1.
Special-casing an empty file seems unnecessary. Also, instead of
having an lseek before the loop and another at the end of the loop,
let's have just one at the start of the loop. Between the two of
those, the need for stat goes away.
Well, the other thing the stat was doing was giving a timestamp
for an empty log. Let's just use current time in that case.
More information about the Toybox
mailing list