halt.c - ubase - suckless linux base utils
(HTM) git clone git://git.suckless.org/ubase
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
halt.c (748B)
---
1 /* See LICENSE file for copyright and license details. */
2 #include <sys/syscall.h>
3
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <unistd.h>
7
8 #include "reboot.h"
9 #include "util.h"
10
11 static void
12 usage(void)
13 {
14 eprintf("usage: %s [-pr]\n", argv0);
15 }
16
17 int
18 main(int argc, char *argv[])
19 {
20 int pflag = 0, rflag = 0;
21 int cmd = LINUX_REBOOT_CMD_HALT;
22
23 ARGBEGIN {
24 case 'p':
25 pflag = 1;
26 break;
27 case 'r':
28 rflag = 1;
29 break;
30 default:
31 usage();
32 } ARGEND;
33
34 if (argc > 0)
35 usage();
36
37 sync();
38
39 if (pflag && rflag)
40 usage();
41
42 if (pflag)
43 cmd = LINUX_REBOOT_CMD_POWER_OFF;
44 if (rflag)
45 cmd = LINUX_REBOOT_CMD_RESTART;
46
47 if (syscall(__NR_reboot, LINUX_REBOOT_MAGIC1,
48 LINUX_REBOOT_MAGIC2, cmd, NULL) < 0)
49 eprintf("reboot:");
50 return 0;
51 }