Dont hard-code nologin file
It's configurable in /etc/login.defs as NOLOGINS_FILE, avoid to hard
coding it here, introduce a macro FINIT_NOLOGIN_PATH instead which is
configurable from compiler flags, it's not defined, then back to
_PATH_NOLOGIN from /usr/include/paths.h.
#include "config.h" /* Generated by configure script */
+#include <paths.h>
#include <sys/types.h>
#include "finit.h"
sm_t sm;
+#ifndef FINIT_NOLOGIN_PATH
+#define FINIT_NOLOGIN_PATH _PATH_NOLOGIN /* Stop user logging in. */
+#endif
+
void sm_init(sm_t *sm)
{
sm->state = SM_BOOTSTRAP_STATE;
@@ -76,16 +81,16 @@ static char *sm_status(sm_state_t state)
* Disable login in single user mode and shutdown/reboot
*
* Re-enable only when going from these runlevels, this way a user can
- * manage /etc/nologin manually within the other runlevels without us
- * pulling the rug from under their feet.
+ * manage FINIT_NOLOGIN_PATH manually within the other runlevels without
+ * us pulling the rug from under their feet.
*/
static void nologin(void)
{
if (runlevel == 1 || runlevel == 0 || runlevel == 6)
- touch("/etc/nologin");
+ touch(FINIT_NOLOGIN_PATH);
if (prevlevel == 1 || prevlevel == 0 || prevlevel == 6)
- erase("/etc/nologin");
+ erase(FINIT_NOLOGIN_PATH);
}
void sm_set_runlevel(sm_t *sm, int newlevel)
