mirror of
https://github.com/troglobit/finit.git
synced 2026-11-01 13:10:32 +00:00
Fix ordering of UTMP events: reboot, then runlevel
This patch fixes the ordering of UTMP events. The first event that is expected in /var/run/utmp is reboot, next is the runlevel change to the configured runlevel, e.g. from S --> 2. Let the bootmisc plugin handle this, it knows when /var/run/utmp has been created and is writable. It is not the eact boot time, but close enough for most usees. Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
1 parent
addc21bdf6
commit
f8def336d4
3 files changed
+5
-8
No files matched your search
@@ -270,9 +270,6 @@ int main(int argc, char* argv[])
|
|||||||
mount("tmpfs", "/run", "tmpfs", MS_NODEV, "mode=0755,size=10%");
|
mount("tmpfs", "/run", "tmpfs", MS_NODEV, "mode=0755,size=10%");
|
||||||
umask(022);
|
umask(022);
|
||||||
|
|
||||||
/* Set BOOT_TIME UTMP entry */
|
|
||||||
utmp_set_boot();
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parse kernel parameters
|
* Parse kernel parameters
|
||||||
*/
|
*/
|
||||||
|
|||||||
+3
-5
@@ -22,21 +22,19 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <utmp.h>
|
|
||||||
#include <lite/lite.h>
|
#include <lite/lite.h>
|
||||||
|
|
||||||
#include "../config.h"
|
#include "../config.h"
|
||||||
#include "../finit.h"
|
#include "../finit.h"
|
||||||
#include "../helpers.h"
|
#include "../helpers.h"
|
||||||
#include "../plugin.h"
|
#include "../plugin.h"
|
||||||
|
#include "../utmp-api.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Setup standard FHS 2.3 structure in /var, and write runlevel to UTMP
|
* Setup standard FHS 2.3 structure in /var, and write runlevel to UTMP
|
||||||
*/
|
*/
|
||||||
static void setup(void *UNUSED(arg))
|
static void setup(void *UNUSED(arg))
|
||||||
{
|
{
|
||||||
struct utmp entry;
|
|
||||||
|
|
||||||
_d("Setting up FHS structure in /var ...");
|
_d("Setting up FHS structure in /var ...");
|
||||||
makedir("/var/cache", 0755);
|
makedir("/var/cache", 0755);
|
||||||
makedir("/var/games", 0755);
|
makedir("/var/games", 0755);
|
||||||
@@ -77,8 +75,8 @@ static void setup(void *UNUSED(arg))
|
|||||||
chmod("/var/log/lastlog", 0664);
|
chmod("/var/log/lastlog", 0664);
|
||||||
chown("/var/log/lastlog", 0, getgroup("utmp"));
|
chown("/var/log/lastlog", 0, getgroup("utmp"));
|
||||||
|
|
||||||
_d("Setting initial runlevel 'S', bootstrap ...");
|
/* Set BOOT_TIME UTMP entry */
|
||||||
runlevel_set(0, 0); /* Bootstrap 'S' */
|
utmp_set_boot();
|
||||||
|
|
||||||
#ifdef TOUCH_ETC_NETWORK_RUN_IFSTATE
|
#ifdef TOUCH_ETC_NETWORK_RUN_IFSTATE
|
||||||
touch("/etc/network/run/ifstate");
|
touch("/etc/network/run/ifstate");
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ int utmp_set(int type, int pid, char *user, char *line, char *id)
|
|||||||
ut.ut_tv.tv_sec = time(NULL);
|
ut.ut_tv.tv_sec = time(NULL);
|
||||||
|
|
||||||
setutent();
|
setutent();
|
||||||
|
while (getutent())
|
||||||
|
;
|
||||||
result = pututline(&ut) ? 0 : 1;;
|
result = pututline(&ut) ? 0 : 1;;
|
||||||
endutent();
|
endutent();
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user