diff options
author | Richard M. Stallman <rms@gnu.org> | 1998-05-18 00:17:38 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1998-05-18 00:17:38 +0000 |
commit | b7c85de15ef49f3351a951985bedc793838c7d82 (patch) | |
tree | bf796833a83e2bc7bf39f7f66ee9b3800c49b540 | |
parent | 47ff09bac8012ccaa352c1f6eff1abb37c03b221 (diff) | |
download | emacs-b7c85de15ef49f3351a951985bedc793838c7d82.tar.gz |
(get_boot_time): Scan the whole wtmp file
to find the most recent reboot.
-rw-r--r-- | src/filelock.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/filelock.c b/src/filelock.c index 819516d04bd..6876cbdb5c1 100644 --- a/src/filelock.c +++ b/src/filelock.c @@ -104,13 +104,27 @@ get_boot_time () return boot_time; utmpname ("/var/log/wtmp"); - ut.ut_type = BOOT_TIME; - utp = getutid (&ut); + setutent (); + boot_time = 1; + while (1) + { + /* Find the next reboot record. */ + ut.ut_type = BOOT_TIME; + utp = getutid (&ut); + if (! utp) + break; + /* Compare reboot times and use the newest one. */ + if (utp->ut_time > boot_time) + boot_time = utp->ut_time; + /* Advance on element in the file + so that getutid won't repeat the same one. */ + utp = getutent (); + if (! utp) + break; + } endutent (); - if (!utp) - return boot_time = 1; - return boot_time = utp->ut_time; + return boot_time; #else return 0; #endif |