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; +}