summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillaume Cottenceau <gc@mandriva.com>2003-11-27 13:18:47 +0000
committerGuillaume Cottenceau <gc@mandriva.com>2003-11-27 13:18:47 +0000
commitf3837fd9c687ec40de7aab3a56ce75cc39aa2961 (patch)
treec87b4a2f708c86f0c14e8af25f74a9a06255312a
parentd3551589c911a40239d5be2b7ddc414f89dd548f (diff)
downloaddrakx-f3837fd9c687ec40de7aab3a56ce75cc39aa2961.tar
drakx-f3837fd9c687ec40de7aab3a56ce75cc39aa2961.tar.gz
drakx-f3837fd9c687ec40de7aab3a56ce75cc39aa2961.tar.bz2
drakx-f3837fd9c687ec40de7aab3a56ce75cc39aa2961.tar.xz
drakx-f3837fd9c687ec40de7aab3a56ce75cc39aa2961.zip
allow to halt machine
-rw-r--r--mdk-stage1/init.c13
-rw-r--r--move/Makefile4
-rwxr-xr-xmove/make_live2
-rwxr-xr-xmove/tree/halt5
-rwxr-xr-xmove/tree/reboot (renamed from move/tree/halt_reboot)0
5 files changed, 19 insertions, 5 deletions
diff --git a/mdk-stage1/init.c b/mdk-stage1/init.c
index ac9154dcd..44fc9a3e9 100644
--- a/mdk-stage1/init.c
+++ b/mdk-stage1/init.c
@@ -336,13 +336,17 @@ void unmount_filesystems(void)
}
}
+int reboot_magic = 0x01234567;
+
int in_reboot(void)
{
int fd;
if ((fd = open("/var/run/rebootctl", O_RDONLY, 0)) > 0) {
- char buf[1];
+ char buf[100];
int i = read(fd, buf, sizeof(buf));
close(fd);
+ if (strstr(buf, "halt"))
+ reboot_magic = 0x4321FEDC;
return i > 0;
}
return 0;
@@ -475,9 +479,12 @@ int main(int argc __attribute__ ((unused)), char **argv __attribute__ ((unused))
sync(); sync();
if (!abnormal_termination) {
- printf("automatic reboot in 10 seconds\n");
+ if (reboot_magic == 0x01234567)
+ printf("automatic reboot in 10 seconds\n");
+ else
+ printf("automatic poweroff in 10 seconds\n");
sleep(10);
- reboot(0xfee1dead, 672274793, 0x01234567);
+ reboot(0xfee1dead, 672274793, reboot_magic);
} else {
printf("you may safely reboot or halt your system\n");
while (1);
diff --git a/move/Makefile b/move/Makefile
index 8f9b82583..ee8571ec6 100644
--- a/move/Makefile
+++ b/move/Makefile
@@ -7,7 +7,7 @@ ISO = /BIG/mdkmove.iso
DATA_FILES = devices symlinks directories-to-create etcfiles all-etcfiles keyfiles \
BOOT-800-MOVE.jpg BOOT-1024-MOVE.jpg BOOT-1280-MOVE.jpg BOOT-1600-MOVE.jpg
-PROGRAM_FILES = etc-monitorer.pl tree/startkde_move tree/wait4x tree/halt_reboot
+PROGRAM_FILES = etc-monitorer.pl tree/startkde_move tree/wait4x
LANG_FILES = $(shell perl -ne 'print $$1 if /ALLOWED_LANGS = qw\((.*)\)/' move.pm)
STAGE1 = ../mdk-stage1
@@ -49,6 +49,8 @@ install: build
sudo cp -f *.pm $(DEST_STAGE2)
sudo cp -f $(addprefix $(INSTALL)/, $(INSTALL_FILES)) $(DEST_STAGE2)
sudo cp -f $(PROGRAM_FILES) $(DEST_LIVETREE)/usr/bin
+ sudo rm -f $(DEST_LIVETREE)/usr/bin/{halt,reboot} #- symlinks to consolehelper
+ sudo cp -f tree/{halt,reboot} $(DEST_LIVETREE)/usr/bin
sudo cp -f tree/X_move $(DEST_LIVETREE)/usr/X11R6/bin
sudo rm -rf $(DEST_LIVETREE)/usr/share/langs
diff --git a/move/make_live b/move/make_live
index 1a9642b21..7422f7c39 100755
--- a/move/make_live
+++ b/move/make_live
@@ -137,4 +137,4 @@ substInFile {
} "$::prefix/etc/rc.d/init.d/$_" foreach qw(xfs dm devfsd syslog);
#- we're not using sysv init, we need to replace these
-output("$::prefix/sbin/$_", "#!/bin/sh\nhalt_reboot"), chmod(0755, "$::prefix/sbin/$_") foreach qw(halt reboot);
+unlink "$::prefix/sbin/$_" foreach qw(halt reboot);
diff --git a/move/tree/halt b/move/tree/halt
new file mode 100755
index 000000000..c8431ac03
--- /dev/null
+++ b/move/tree/halt
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+echo "halt" > /var/run/rebootctl
+sudo killall -USR1 startkde_move
+sudo killall X
diff --git a/move/tree/halt_reboot b/move/tree/reboot
index b4b1d4ede..b4b1d4ede 100755
--- a/move/tree/halt_reboot
+++ b/move/tree/reboot