OSDN Git Service

am 7e612cb8: (-s ours) am f41c7e0b: Merge remote-tracking branch \'toybox/master...
[android-x86/external-toybox.git] / toys / other / reboot.c
1 /* reboot.c - Restart, halt or powerdown the system.
2  *
3  * Copyright 2013 Elie De Brauwer <eliedebrauwer@gmail.com>
4
5 USE_REBOOT(NEWTOY(reboot, "fn", TOYFLAG_SBIN|TOYFLAG_NEEDROOT))
6 USE_REBOOT(OLDTOY(halt, reboot, TOYFLAG_SBIN|TOYFLAG_NEEDROOT))
7 USE_REBOOT(OLDTOY(poweroff, reboot, TOYFLAG_SBIN|TOYFLAG_NEEDROOT))
8
9 config REBOOT
10   bool "reboot"
11   default y
12   help
13     usage: reboot/halt/poweroff [-fn]
14
15     Restart, halt or powerdown the system.
16
17     -f  Don't signal init
18     -n  Don't sync before stopping the system.
19 */
20
21 #define FOR_reboot
22 #include "toys.h"
23 #include <sys/reboot.h>
24
25 void reboot_main(void)
26 {
27   int types[] = {RB_AUTOBOOT, RB_HALT_SYSTEM, RB_POWER_OFF},
28       sigs[] = {SIGINT, SIGUSR1, SIGUSR2}, idx;
29
30   if (!(toys.optflags & FLAG_n)) sync();
31
32   idx = stridx("hp", *toys.which->name)+1;
33   if (toys.optflags & FLAG_f) toys.exitval = reboot(types[idx]);
34   else toys.exitval = kill(1, sigs[idx]);
35 }