commit 30824954f8097195f82072b45e82c1a0bb5538b0
parent d2815a5aa65972c84c1f17cea41617173a32f0c2
Author: sin <sin@2f30.org>
Date: Fri, 7 Feb 2014 16:35:51 +0000
Add ctrlaltdel tool
Diffstat:
2 files changed, 44 insertions(+), 0 deletions(-)
diff --git a/Makefile b/Makefile
@@ -20,6 +20,7 @@ LIB = \
SRC = \
chvt.c \
clear.c \
+ ctrlaltdel.c \
df.c \
dmesg.c \
eject.c \
diff --git a/ctrlaltdel.c b/ctrlaltdel.c
@@ -0,0 +1,43 @@
+/* See LICENSE file for copyright and license details. */
+#include <sys/syscall.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "reboot.h"
+#include "util.h"
+
+static void
+usage(void)
+{
+ eprintf("usage: %s [-hs]\n", argv0);
+}
+
+int
+main(int argc, char *argv[])
+{
+ int hflag = 0;
+ int sflag = 0;
+ int cmd;
+
+ ARGBEGIN {
+ case 'h':
+ hflag = 1;
+ break;
+ case 's':
+ sflag = 1;
+ break;
+ default:
+ usage();
+ } ARGEND;
+
+ if (argc > 0 || (hflag != 0 && sflag != 0) ||
+ (hflag == 0 && sflag == 0))
+ usage();
+
+ cmd = hflag ? LINUX_REBOOT_CMD_CAD_ON : LINUX_REBOOT_CMD_CAD_OFF;
+
+ if (syscall(__NR_reboot, LINUX_REBOOT_MAGIC1,
+ LINUX_REBOOT_MAGIC2, cmd, NULL) < 0)
+ eprintf("reboot:");
+ return EXIT_SUCCESS;
+}