ubase

suckless linux base utils
git clone git://git.2f30.org/ubase.git
Log | Files | Refs | README | LICENSE

commit 30824954f8097195f82072b45e82c1a0bb5538b0
parent d2815a5aa65972c84c1f17cea41617173a32f0c2
Author: sin <sin@2f30.org>
Date:   Fri Feb  7 16:35:51 +0000

Add ctrlaltdel tool

Diffstat:
Makefile | 1+
ctrlaltdel.c | 43+++++++++++++++++++++++++++++++++++++++++++
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; +}