+ static const int magic[] = {
+#ifdef RB_HALT_SYSTEM
+RB_HALT_SYSTEM,
+#elif defined RB_HALT
+RB_HALT,
+#endif
+#ifdef RB_POWER_OFF
+RB_POWER_OFF,
+#elif defined RB_POWERDOWN
+RB_POWERDOWN,
+#endif
+RB_AUTOBOOT
+ };
+ static const int signals[] = { SIGUSR1, SIGUSR2, SIGTERM };
+
+ char *delay;
+ int which, flags, rc = 1;
+
+ /* Figure out which applet we're running */
+ for (which = 0; "hpr"[which] != *applet_name; which++);
+
+ /* Parse and handle arguments */
+ flags = getopt32(argc, argv, "d:nf", &delay);
+ if (flags & 1) sleep(xatou(delay));
+ if (!(flags & 2)) sync();