aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--toys/other/reboot.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/toys/other/reboot.c b/toys/other/reboot.c
index ae70cf91..5cbc4f87 100644
--- a/toys/other/reboot.c
+++ b/toys/other/reboot.c
@@ -23,20 +23,9 @@ config REBOOT
void reboot_main(void)
{
- char c = toys.which->name[0];
-
- if (!(toys.optflags & FLAG_n))
- sync();
-
- switch(c) {
- case 'p':
- toys.exitval = reboot(RB_POWER_OFF);
- break;
- case 'h':
- toys.exitval = reboot(RB_HALT_SYSTEM);
- break;
- case 'r':
- default:
- toys.exitval = reboot(RB_AUTOBOOT);
- }
+ int types[] = {RB_AUTOBOOT, RB_HALT_SYSTEM, RB_POWER_OFF};
+
+ if (!(toys.optflags & FLAG_n)) sync();
+
+ toys.exitval = reboot(types[stridx("hp", *toys.which->name)+1]);
}