changeset 1092:1a5c7092afbf draft

New toy: reboot/halt/poweroff
author Elie De Brauwer <eliedebrauwer@gmail.com>
date Tue, 01 Oct 2013 20:57:21 +0200
parents c4d4a6e7473f
children e1d3a9ac9e9f
files toys/other/reboot.c
diffstat 1 files changed, 42 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toys/other/reboot.c	Tue Oct 01 20:57:21 2013 +0200
@@ -0,0 +1,42 @@
+/* reboot.c - Restart, halt or powerdown the system.
+ *
+ * Copyright 2013 Elie De Brauwer <eliedebrauwer@gmail.com>
+
+USE_REBOOT(NEWTOY(reboot, "n", TOYFLAG_BIN|TOYFLAG_NEEDROOT))
+USE_REBOOT(OLDTOY(halt, reboot, "n", TOYFLAG_BIN|TOYFLAG_NEEDROOT))
+USE_REBOOT(OLDTOY(poweroff, reboot, "n", TOYFLAG_BIN|TOYFLAG_NEEDROOT))
+
+config REBOOT
+  bool "reboot"
+  default y
+  help
+    usage: reboot/halt/poweroff [-n]
+
+    Restart, halt or powerdown the system.
+
+    -n	Don't sync before stopping the system.
+*/
+
+#define FOR_reboot
+#include "toys.h"
+#include <sys/reboot.h>
+
+void reboot_main(void)
+{
+  char c = toys.which->name[0];
+
+  if (!(toys.optflags & FLAG_n))
+    sync();
+
+  switch(c) {
+  case 'p':
+    toys.exitval = reboot(RB_POWER_OFF);
+      break;
+  case 'h':
+    toys.exitval = reboot(RB_HALT_SYSTEM);
+    break;
+  case 'r':
+  default:
+    toys.exitval = reboot(RB_AUTOBOOT);
+  }
+}