]> Zhao Yanbai Git Server - minix.git/commitdiff
init: write boot entry to root wtmp
authorDavid van Moolenbroek <david@minix3.org>
Mon, 5 Dec 2011 09:55:50 +0000 (10:55 +0100)
committerDavid van Moolenbroek <david@minix3.org>
Mon, 5 Dec 2011 12:56:16 +0000 (13:56 +0100)
This unbreaks the fsck check on startup.

servers/init/init.c

index f2abc08935f25d85e4509ee6de889a9fa7ac6cbe..445eaf88e6ae74b49e8932e68068ca9256d7dce9 100644 (file)
@@ -42,6 +42,7 @@ struct ttyent TT_REBOOT = { "console", "-", REBOOT_CMD, NULL };
 
 char PATH_UTMP[] = "/etc/utmp";                /* current logins */
 char PATH_WTMP[] = "/usr/adm/wtmp";    /* login/logout history */
+char PATH_ROOT_WTMP[] = "/etc/wtmp";   /* wtmp for system up/down events */
 
 #define PIDSLOTS       32              /* first this many ttys can be on */
 
@@ -473,6 +474,14 @@ pid_t pid;                 /* pid of process */
 
   switch (type) {
   case BOOT_TIME:
+       /* Add new root wtmp entry. */
+       if ((fd = open(PATH_ROOT_WTMP, O_WRONLY | O_APPEND)) < 0
+                 || write(fd, &utmp, sizeof(utmp)) == -1
+       ) {
+               if (errno != ENOENT) report(2, PATH_ROOT_WTMP);
+       }
+       if (fd != -1) close(fd);
+       /* fall-through */
   case DEAD_PROCESS:
        /* Add new wtmp entry. */
        if ((fd = open(PATH_WTMP, O_WRONLY | O_APPEND)) < 0