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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
e1d3a9ac9e9f Minor cleanup of reboot
Rob Landley <rob@landley.net>
parents: 1092
diff changeset
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
e1d3a9ac9e9f Minor cleanup of reboot
Rob Landley <rob@landley.net>
parents: 1092
diff changeset
28 if (!(toys.optflags & FLAG_n)) sync();
e1d3a9ac9e9f Minor cleanup of reboot
Rob Landley <rob@landley.net>
parents: 1092
diff changeset
29
e1d3a9ac9e9f Minor cleanup of reboot
Rob Landley <rob@landley.net>
parents: 1092
diff changeset
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 }