unix/minit

hard-reboot.c in master
Repositories | Summary | Log | Files | README | COPYING

hard-reboot.c (691B) download


 1#include <unistd.h>
 2#include <sys/reboot.h>
 3#include <stdlib.h>
 4
 5#include <libowfat/str.h>
 6
 7#define ABORTMSG "hard-reboot: Aborted.\n"
 8#define USAGE "Say \"hard-reboot (RESTART|HALT|POWER_OFF)\" if you really mean it.\n"
 9
10void usage(void) {
11  write(2, ABORTMSG, str_len(ABORTMSG));
12  write(2, USAGE, str_len(USAGE));
13  exit(1);
14}
15
16int main(int argc, char *argv[]) {
17  if (argc!=2)
18    usage();
19
20  sync();
21  sync();
22  sync();
23  if (strcmp(argv[1], "RESTART")==0) {
24    reboot(RB_AUTOBOOT);
25  } else if (strcmp(argv[1], "HALT")==0) {
26    reboot(RB_HALT_SYSTEM);
27  } else if (strcmp(argv[1], "POWER_OFF")==0) {
28    reboot(RB_POWER_OFF);
29  } else {
30    usage();
31  }
32
33  while(1)
34    sleep(10);
35}