X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fprocd.git;a=blobdiff_plain;f=state.c;h=ccf410454711880c1f3639f4a84bb8ea42e9a05c;hp=1ed70f542f13d3ec7b8a3d3cf2fcf8e31cf42cd8;hb=a5954cf302fe46d8e29770c818336763112b9a6e;hpb=91da63d3d3fd680c805dd1a1b78df5b8731a8173 diff --git a/state.c b/state.c index 1ed70f5..ccf4104 100644 --- a/state.c +++ b/state.c @@ -48,7 +48,7 @@ static void set_stdio(const char* tty) !freopen(tty, "w", stdout) || !freopen(tty, "w", stderr) || chdir("/")) - ERROR("failed to set stdio\n"); + ERROR("failed to set stdio: %m\n"); else fcntl(STDERR_FILENO, F_SETFL, fcntl(STDERR_FILENO, F_GETFL) | O_NONBLOCK); } @@ -73,7 +73,7 @@ static void set_console(void) } if (chdir("/dev")) { - ERROR("failed to change dir to /dev\n"); + ERROR("failed to change dir to /dev: %m\n"); return; } while (tty!=NULL) { @@ -87,7 +87,7 @@ static void set_console(void) i++; } if (chdir("/")) - ERROR("failed to change dir to /\n"); + ERROR("failed to change dir to /: %m\n"); if (tty != NULL) set_stdio(tty); @@ -111,7 +111,6 @@ static void state_enter(void) set_stdio("console"); LOG("- ubus -\n"); procd_connect_ubus(); - service_init(); service_start_early("ubus", ubus_cmd); break; @@ -129,6 +128,8 @@ static void state_enter(void) case STATE_RUNNING: LOG("- init complete -\n"); + procd_inittab_run("respawnlate"); + procd_inittab_run("askconsolelate"); break; case STATE_SHUTDOWN: @@ -150,6 +151,7 @@ static void state_enter(void) kill(-1, SIGKILL); sync(); sleep(1); +#ifndef DISABLE_INIT if (reboot_event == RB_POWER_OFF) LOG("- power down -\n"); else @@ -165,9 +167,11 @@ static void state_enter(void) reboot(reboot_event); _exit(EXIT_SUCCESS); } - while (1) sleep(1); +#else + exit(0); +#endif break; default: