From 30824954f8097195f82072b45e82c1a0bb5538b0 Mon Sep 17 00:00:00 2001 From: sin Date: Fri, 7 Feb 2014 16:35:51 +0000 Subject: [PATCH] Add ctrlaltdel tool --- Makefile | 1 + ctrlaltdel.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 ctrlaltdel.c diff --git a/Makefile b/Makefile index 1c12d07..77d650e 100644 --- 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 new file mode 100644 index 0000000..3048932 --- /dev/null +++ b/ctrlaltdel.c @@ -0,0 +1,43 @@ +/* See LICENSE file for copyright and license details. */ +#include +#include +#include +#include +#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; +}