summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/init.c
diff options
context:
space:
mode:
authorGuillaume Cottenceau <gc@mandriva.com>2003-11-27 12:58:32 +0000
committerGuillaume Cottenceau <gc@mandriva.com>2003-11-27 12:58:32 +0000
commitd3551589c911a40239d5be2b7ddc414f89dd548f (patch)
tree501c9d7f6a3c8a44376280563dbc1603cccb7349 /mdk-stage1/init.c
parent9470b4477a6745cd40256a13a66e82a96eea9cdd (diff)
downloaddrakx-d3551589c911a40239d5be2b7ddc414f89dd548f.tar
drakx-d3551589c911a40239d5be2b7ddc414f89dd548f.tar.gz
drakx-d3551589c911a40239d5be2b7ddc414f89dd548f.tar.bz2
drakx-d3551589c911a40239d5be2b7ddc414f89dd548f.tar.xz
drakx-d3551589c911a40239d5be2b7ddc414f89dd548f.zip
at last a good reboot/halt from kde
Diffstat (limited to 'mdk-stage1/init.c')
-rw-r--r--mdk-stage1/init.c16
1 files changed, 14 insertions, 2 deletions
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))