aboutsummaryrefslogtreecommitdiff
path: root/src/sysvinit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sysvinit.c')
-rw-r--r--src/sysvinit.c58
1 files changed, 40 insertions, 18 deletions
diff --git a/src/sysvinit.c b/src/sysvinit.c
index 337b922..9e918c7 100644
--- a/src/sysvinit.c
+++ b/src/sysvinit.c
@@ -425,6 +425,33 @@ sysvinit_setenv (char const *data, int size)
}
}
+int
+sysvinit_set_runlevel (int newlevel)
+{
+ switch (newlevel)
+ {
+ case 'A':
+ case 'B':
+ case 'C':
+ sysvinit_demand (newlevel);
+ break;
+
+ default:
+ if (newlevel == runlevel)
+ {
+ }
+ if (runlevel_index (newlevel) == -1)
+ return -1;
+ else
+ {
+ dfl_level = newlevel;
+ inittrans ();
+ }
+ }
+ return 0;
+}
+
+
char *init_fifo = INIT_FIFO;
static void create_fifo (void);
@@ -480,24 +507,7 @@ sysvinit_fifo_handler (int fd, void *data)
break;
default:
- if (buf.req.runlevel != runlevel)
- {
- switch (buf.req.runlevel)
- {
- case 'A':
- case 'B':
- case 'C':
- sysvinit_demand (buf.req.runlevel);
- break;
-
- default:
- if (runlevel_index (buf.req.runlevel) != -1)
- {
- dfl_level = buf.req.runlevel;
- inittrans ();
- }
- }
- }
+ sysvinit_set_runlevel (buf.req.runlevel);
}
break;
@@ -1097,3 +1107,15 @@ powerfailcmd (int power_stat)
sysvinit_runlevel_setup (mask, NULL);
}
+
+void
+sysvinit_report (struct json_value *obj)
+{
+ json_object_set_string (obj, "runlevel", "%c", runlevel);
+ json_object_set_string (obj, "prevlevel", "%c", prevlevel);
+ json_object_set_string (obj, "bootstate", "%s",
+ boot_state_name[boot_state]);
+ if (initdefault)
+ json_object_set_string (obj, "initdefault", "%c",
+ initdefault);
+}

Return to:

Send suggestions and report system problems to the System administrator.