@@ -61,6 +61,7 @@ static const char *LOG_FILE = "/cache/recovery/log";
61
61
static const char * LAST_LOG_FILE = "/cache/recovery/last_log" ;
62
62
static const char * SDCARD_ROOT = "/sdcard" ;
63
63
static int allow_display_toggle = 1 ;
64
+ static int poweroff = 0 ;
64
65
static const char * SDCARD_PACKAGE_FILE = "/sdcard/update.zip" ;
65
66
static const char * TEMPORARY_LOG_FILE = "/tmp/recovery.log" ;
66
67
static const char * SIDELOAD_TEMP_DIR = "/tmp/sideload" ;
@@ -707,6 +708,7 @@ prompt_and_wait() {
707
708
708
709
switch (chosen_item ) {
709
710
case ITEM_REBOOT :
711
+ poweroff = 0 ;
710
712
return ;
711
713
712
714
case ITEM_WIPE_DATA :
@@ -751,6 +753,9 @@ prompt_and_wait() {
751
753
case ITEM_ADVANCED :
752
754
show_advanced_menu ();
753
755
break ;
756
+ case ITEM_POWEROFF :
757
+ poweroff = 1 ;
758
+ return ;
754
759
}
755
760
}
756
761
}
@@ -782,6 +787,9 @@ main(int argc, char **argv) {
782
787
return nandroid_main (argc , argv );
783
788
if (strstr (argv [0 ], "reboot" ))
784
789
return reboot_main (argc , argv );
790
+ if (strstr (argv [0 ], "poweroff" )){
791
+ return reboot_main (argc , argv );
792
+ }
785
793
if (strstr (argv [0 ], "setprop" ))
786
794
return setprop_main (argc , argv );
787
795
return busybox_driver (argc , argv );
@@ -939,9 +947,12 @@ main(int argc, char **argv) {
939
947
940
948
// Otherwise, get ready to boot the main system...
941
949
finish_recovery (send_intent );
942
- ui_print ("Rebooting...\n" );
950
+ if (!poweroff )
951
+ ui_print ("Rebooting...\n" );
952
+ else
953
+ ui_print ("Shutting down...\n" );
943
954
sync ();
944
- reboot (RB_AUTOBOOT );
955
+ reboot ((! poweroff ) ? RB_AUTOBOOT : RB_POWER_OFF );
945
956
return EXIT_SUCCESS ;
946
957
}
947
958
0 commit comments