Home | History | Annotate | Download | only in other
      1 /* reboot.c - Restart, halt or powerdown the system.
      2  *
      3  * Copyright 2013 Elie De Brauwer <eliedebrauwer (at) 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[] = {SIGTERM, 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 }
     36