Mercurial > hg > toybox
annotate toys/other/reboot.c @ 1634:5fac2769a159 draft
Redo option parsing infrastructure so #define FORCE_FLAGS can unzero flag macros for a disabled command (needed when multiple commands share infrastructure with a common set of flags).
This means the flag space is no longer packed, but leaves gaps where the zeroes
go. (Actual flag bit positions are the same for all configs.) Since the
option parsing needs to know where the holes are, the OPTSTR values are
now generated as part of flags.h with ascii 1 values for the disabled values.
(So generated/oldflags.h went away.)
This also means that the option string argument for OLDTOY() went away, it now
uses the same arguments as the NEWTOY() it references.
author | Rob Landley <rob@landley.net> |
---|---|
date | Wed, 31 Dec 2014 21:30:59 -0600 |
parents | e1d3a9ac9e9f |
children | 57f2a26fa92c |
rev | line source |
---|---|
1092
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
1 /* reboot.c - Restart, halt or powerdown the system. |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
2 * |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
3 * Copyright 2013 Elie De Brauwer <eliedebrauwer@gmail.com> |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
4 |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
5 USE_REBOOT(NEWTOY(reboot, "n", TOYFLAG_BIN|TOYFLAG_NEEDROOT)) |
1634
5fac2769a159
Redo option parsing infrastructure so #define FORCE_FLAGS can unzero flag macros for a disabled command (needed when multiple commands share infrastructure with a common set of flags).
Rob Landley <rob@landley.net>
parents:
1093
diff
changeset
|
6 USE_REBOOT(OLDTOY(halt, reboot, TOYFLAG_BIN|TOYFLAG_NEEDROOT)) |
5fac2769a159
Redo option parsing infrastructure so #define FORCE_FLAGS can unzero flag macros for a disabled command (needed when multiple commands share infrastructure with a common set of flags).
Rob Landley <rob@landley.net>
parents:
1093
diff
changeset
|
7 USE_REBOOT(OLDTOY(poweroff, reboot, TOYFLAG_BIN|TOYFLAG_NEEDROOT)) |
1092
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
8 |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
9 config REBOOT |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
10 bool "reboot" |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
11 default y |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
12 help |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
13 usage: reboot/halt/poweroff [-n] |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
14 |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
15 Restart, halt or powerdown the system. |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
16 |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
17 -n Don't sync before stopping the system. |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
18 */ |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
19 |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
20 #define FOR_reboot |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
21 #include "toys.h" |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
22 #include <sys/reboot.h> |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
23 |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
24 void reboot_main(void) |
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
25 { |
1093 | 26 int types[] = {RB_AUTOBOOT, RB_HALT_SYSTEM, RB_POWER_OFF}; |
1092
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
27 |
1093 | 28 if (!(toys.optflags & FLAG_n)) sync(); |
29 | |
30 toys.exitval = reboot(types[stridx("hp", *toys.which->name)+1]); | |
1092
1a5c7092afbf
New toy: reboot/halt/poweroff
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
31 } |