diff -Naur busybox-1.3.1.orig/init/halt.c busybox-1.3.1/init/halt.c --- busybox-1.3.1.orig/init/halt.c 2006-12-26 22:56:38.000000000 -0600 +++ busybox-1.3.1/init/halt.c 2006-12-29 22:48:18.000000000 -0600 @@ -10,6 +10,8 @@ #include "busybox.h" #include +#include "init_shared.h" /* Linksys mods */ + int halt_main(int argc, char *argv[]) { static const int magic[] = { @@ -38,6 +40,12 @@ if (flags & 1) sleep(xatou(delay)); if (!(flags & 2)) sync(); +/* Linksys Halt code - adapted from the Linksys source for Busybox. */ + rc = bb_shutdown_system(magic[which]); + if (rc) bb_error_msg("No."); + return rc; /* Shrug */ +/* End of Linksys code */ + /* Perform action. */ if (ENABLE_INIT && !(flags & 4)) { if (ENABLE_FEATURE_INITRD) { diff -Naur busybox-1.3.1.orig/init/init_shared.c busybox-1.3.1/init/init_shared.c --- busybox-1.3.1.orig/init/init_shared.c 2006-12-26 22:56:38.000000000 -0600 +++ busybox-1.3.1/init/init_shared.c 2006-12-29 22:48:18.000000000 -0600 @@ -57,6 +57,11 @@ sync(); +/* Linksys Halt code - if poweroff or halt, invoke an external program + to do actually turn off the power. */ + if (magic != 0x01234567) system("/usr/bin/Set_Led power_off"); +/* End of Linksys Halt code */ + reboot(magic); return 0; /* Shrug */ }