Changeset 1770 in MondoRescue for branches/stable/mindi-busybox/init/halt.c
- Timestamp:
- Nov 6, 2007, 11:01:53 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/stable/mindi-busybox/init/halt.c
r821 r1770 5 5 * Copyright 2006 by Rob Landley <rob@landley.net> 6 6 * 7 * Licensed under GPL v2 or later, see file LICENSE in this tarball for details.7 * Licensed under GPL version 2, see file LICENSE in this tarball for details. 8 8 */ 9 9 10 #include "busybox.h" 11 #include <signal.h> 10 #include "libbb.h" 12 11 #include <sys/reboot.h> 13 #include <unistd.h>14 12 15 int halt_main(int argc, char *argv[]) 13 int halt_main(int argc, char **argv); 14 int halt_main(int argc, char **argv) 16 15 { 17 16 static const int magic[] = { … … 28 27 RB_AUTOBOOT 29 28 }; 30 static const int signals[] = { SIGUSR1, SIGUSR2, SIGTERM};29 static const int signals[] = { SIGUSR1, SIGUSR2, SIGTERM }; 31 30 32 char *delay = "hpr";31 char *delay; 33 32 int which, flags, rc = 1; 34 33 35 34 /* Figure out which applet we're running */ 36 for (which=0;delay[which]!=*bb_applet_name;which++);35 for (which = 0; "hpr"[which] != *applet_name; which++); 37 36 38 37 /* Parse and handle arguments */ 39 flags = bb_getopt_ulflags(argc,argv, "d:nf", &delay);40 if (flags &1) sleep(atoi(delay));41 if (!(flags &2)) sync();38 flags = getopt32(argv, "d:nf", &delay); 39 if (flags & 1) sleep(xatou(delay)); 40 if (!(flags & 2)) sync(); 42 41 43 42 /* Perform action. */ 44 43 if (ENABLE_INIT && !(flags & 4)) { 45 44 if (ENABLE_FEATURE_INITRD) { 46 long *pidlist=find_pid_by_name("linuxrc"); 47 if (*pidlist>0) rc = kill(*pidlist,signals[which]); 48 if (ENABLE_FEATURE_CLEAN_UP) free(pidlist); 45 pid_t *pidlist = find_pid_by_name("linuxrc"); 46 if (pidlist[0] > 0) 47 rc = kill(pidlist[0], signals[which]); 48 if (ENABLE_FEATURE_CLEAN_UP) 49 free(pidlist); 49 50 } 50 if (rc) rc = kill(1,signals[which]); 51 } else rc = reboot(magic[which]); 51 if (rc) 52 rc = kill(1, signals[which]); 53 } else 54 rc = reboot(magic[which]); 52 55 53 if (rc) bb_error_msg("No."); 56 if (rc) 57 bb_error_msg("no"); 54 58 return rc; 55 59 }
Note:
See TracChangeset
for help on using the changeset viewer.