* archival/bunzip2.c (bunzip2_main): Do not remove files if writing to standard
[oweals/busybox.git] / init / reboot.c
index 17ec9f82ff806d17377fbbafbcd29e5f9054ec57..001a3c7d2f8f668b77db566a7fc3145905efb942 100644 (file)
@@ -1,8 +1,9 @@
+/* vi: set sw=4 ts=4: */
 /*
  * Mini reboot implementation for busybox
  *
- *
  * Copyright (C) 1995, 1996 by Bruce Perens <bruce@pixar.com>.
+ * Copyright (C) 1999-2002 by Erik Andersen <andersee@debian.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  *
  */
 
-#include "internal.h"
+#include "busybox.h"
 #include <signal.h>
 
-extern int
-reboot_main(int argc, char ** argv)
+extern int reboot_main(int argc, char **argv)
 {
+#ifdef CONFIG_FEATURE_INITRD
        /* don't assume init's pid == 1 */
-       exit( kill(findInitPid(), SIGUSR2));
+       long *pid = find_pid_by_name("init");
+       if (!pid || *pid<=0) {
+               pid = find_pid_by_name("linuxrc");
+               if (!pid || *pid<=0)
+                       error_msg_and_die("no process killed");
+       }
+       return(kill(*pid, SIGTERM));
+#else
+       return(kill(1, SIGTERM));
+#endif
 }
+
+/*
+Local Variables:
+c-file-style: "linux"
+c-basic-offset: 4
+tab-width: 4
+End:
+*/