+ if (IN_SET(action, HANDLE_HALT, HANDLE_POWEROFF, HANDLE_REBOOT)) {
+
+ /* As we have no systemd update-utmp daemon running, we have to
+ * set the relevant utmp/wtmp entries ourselves.
+ */
+
+ if (strv_extend(&argv_utmp, "elogind") < 0)
+ return log_oom();
+
+ if (HANDLE_REBOOT == action) {
+ if (strv_extend(&argv_utmp, "reboot") < 0)
+ return log_oom();
+ } else {
+ if (strv_extend(&argv_utmp, "shutdown") < 0)
+ return log_oom();
+ }
+
+ /* This comes from our patched update-utmp/update-utmp.c */
+ update_utmp(2, argv_utmp, m->bus);
+ strv_free(argv_utmp);
+ }
+
+ /* Now perform the requested action */