From d3551589c911a40239d5be2b7ddc414f89dd548f Mon Sep 17 00:00:00 2001 From: Guillaume Cottenceau Date: Thu, 27 Nov 2003 12:58:32 +0000 Subject: at last a good reboot/halt from kde --- mdk-stage1/init.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'mdk-stage1') diff --git a/mdk-stage1/init.c b/mdk-stage1/init.c index f08e423f1..ac9154dcd 100644 --- a/mdk-stage1/init.c +++ b/mdk-stage1/init.c @@ -336,6 +336,18 @@ void unmount_filesystems(void) } } +int in_reboot(void) +{ + int fd; + if ((fd = open("/var/run/rebootctl", O_RDONLY, 0)) > 0) { + char buf[1]; + int i = read(fd, buf, sizeof(buf)); + close(fd); + return i > 0; + } + return 0; +} + int exit_value_proceed = 66; int main(int argc __attribute__ ((unused)), char **argv __attribute__ ((unused))) @@ -422,8 +434,8 @@ int main(int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)) end_stage2 = 1; } - if ((fd = open("/tmp/reboot", O_RDONLY, 0)) > 0) { - close(fd); + if (in_reboot()) { + // any exitcode is valid if we're in_reboot } else if (!WIFEXITED(wait_status) || (WEXITSTATUS(wait_status) != 0 && WEXITSTATUS(wait_status) != exit_value_proceed)) { printf("exited abnormally :-( "); if (WIFSIGNALED(wait_status)) -- cgit v1.2.1