diff options
Diffstat (limited to 'adb_install.cpp')
-rw-r--r-- | adb_install.cpp | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/adb_install.cpp b/adb_install.cpp index a226ea571..c18126d00 100644 --- a/adb_install.cpp +++ b/adb_install.cpp @@ -24,11 +24,10 @@ #include <sys/stat.h> #include <signal.h> #include <fcntl.h> +#include <stdio.h> #include "ui.h" #include "cutils/properties.h" -#include "install.h" -#include "common.h" #include "adb_install.h" extern "C" { #include "minadbd/adb.h" @@ -40,14 +39,24 @@ static void set_usb_driver(bool enabled) { int fd = open("/sys/class/android_usb/android0/enable", O_WRONLY); if (fd < 0) { +/* These error messages show when built in older Android branches (e.g. Gingerbread) + It's not a critical error so we're disabling the error messages. ui->Print("failed to open driver control: %s\n", strerror(errno)); +*/ + printf("failed to open driver control: %s\n", strerror(errno)); return; } if (write(fd, enabled ? "1" : "0", 1) < 0) { +/* ui->Print("failed to set driver control: %s\n", strerror(errno)); +*/ + printf("failed to set driver control: %s\n", strerror(errno)); } if (close(fd) < 0) { +/* ui->Print("failed to close driver control: %s\n", strerror(errno)); +*/ + printf("failed to close driver control: %s\n", strerror(errno)); } } @@ -63,27 +72,29 @@ maybe_restart_adbd() { char value[PROPERTY_VALUE_MAX+1]; int len = property_get("ro.debuggable", value, NULL); if (len == 1 && value[0] == '1') { - ui->Print("Restarting adbd...\n"); + printf("Restarting adbd...\n"); set_usb_driver(true); property_set("ctl.start", "adbd"); } } int -apply_from_adb(RecoveryUI* ui_, int* wipe_cache, const char* install_file) { - ui = ui_; +apply_from_adb(const char* install_file) { stop_adbd(); set_usb_driver(true); - +/* ui->Print("\n\nNow send the package you want to apply\n" "to the device with \"adb sideload <filename>\"...\n"); - +*/ pid_t child; if ((child = fork()) == 0) { - execl("/sbin/recovery", "recovery", "--adbd", NULL); + execl("/sbin/recovery", "recovery", "--adbd", install_file, NULL); _exit(-1); } + char child_prop[PROPERTY_VALUE_MAX]; + sprintf(child_prop, "%i", child); + property_set("tw_child_pid", child_prop); int status; // TODO(dougz): there should be a way to cancel waiting for a // package (by pushing some button combo on the device). For now @@ -91,20 +102,19 @@ apply_from_adb(RecoveryUI* ui_, int* wipe_cache, const char* install_file) { // package, like "/dev/null". waitpid(child, &status, 0); if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { - ui->Print("status %d\n", WEXITSTATUS(status)); + printf("status %d\n", WEXITSTATUS(status)); } - set_usb_driver(false); maybe_restart_adbd(); struct stat st; - if (stat(ADB_SIDELOAD_FILENAME, &st) != 0) { + if (stat(install_file, &st) != 0) { if (errno == ENOENT) { - ui->Print("No package received.\n"); + printf("No package received.\n"); } else { - ui->Print("Error reading package:\n %s\n", strerror(errno)); + printf("Error reading package:\n %s\n", strerror(errno)); } - return INSTALL_ERROR; + return -1; } - return install_package(ADB_SIDELOAD_FILENAME, wipe_cache, install_file); + return 0; } |