diff options
author | Tianjie Xu <xunchang@google.com> | 2016-08-18 00:13:12 +0200 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2016-08-18 00:13:12 +0200 |
commit | d93f541679534f40ff8758d1abc30f3b0dd7758a (patch) | |
tree | 1e8903709d97935081b5a66e5eea096efa20f765 | |
parent | Merge "Format formattable partitions if mount fails" am: cb76857147 am: 2f5cfdbb9d (diff) | |
parent | Merge ""view recovery logs" will show /tmp/recovery.log" am: c158cf0a14 (diff) | |
download | android_bootable_recovery-d93f541679534f40ff8758d1abc30f3b0dd7758a.tar android_bootable_recovery-d93f541679534f40ff8758d1abc30f3b0dd7758a.tar.gz android_bootable_recovery-d93f541679534f40ff8758d1abc30f3b0dd7758a.tar.bz2 android_bootable_recovery-d93f541679534f40ff8758d1abc30f3b0dd7758a.tar.lz android_bootable_recovery-d93f541679534f40ff8758d1abc30f3b0dd7758a.tar.xz android_bootable_recovery-d93f541679534f40ff8758d1abc30f3b0dd7758a.tar.zst android_bootable_recovery-d93f541679534f40ff8758d1abc30f3b0dd7758a.zip |
-rw-r--r-- | recovery.cpp | 67 |
1 files changed, 36 insertions, 31 deletions
diff --git a/recovery.cpp b/recovery.cpp index 725976f9d..6989fe00d 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -1001,45 +1001,50 @@ static bool wipe_ab_device(size_t wipe_package_size) { } static void choose_recovery_file(Device* device) { - if (!has_cache) { - ui->Print("No /cache partition found.\n"); - return; - } - // "Back" + KEEP_LOG_COUNT * 2 + terminating nullptr entry char* entries[1 + KEEP_LOG_COUNT * 2 + 1]; memset(entries, 0, sizeof(entries)); unsigned int n = 0; - // Add LAST_LOG_FILE + LAST_LOG_FILE.x - // Add LAST_KMSG_FILE + LAST_KMSG_FILE.x - for (int i = 0; i < KEEP_LOG_COUNT; i++) { - char* log_file; - int ret; - ret = (i == 0) ? asprintf(&log_file, "%s", LAST_LOG_FILE) : - asprintf(&log_file, "%s.%d", LAST_LOG_FILE, i); - if (ret == -1) { - // memory allocation failure - return early. Should never happen. - return; - } - if ((ensure_path_mounted(log_file) != 0) || (access(log_file, R_OK) == -1)) { - free(log_file); - } else { - entries[n++] = log_file; - } + if (has_cache) { + // Add LAST_LOG_FILE + LAST_LOG_FILE.x + // Add LAST_KMSG_FILE + LAST_KMSG_FILE.x + for (int i = 0; i < KEEP_LOG_COUNT; i++) { + char* log_file; + int ret; + ret = (i == 0) ? asprintf(&log_file, "%s", LAST_LOG_FILE) : + asprintf(&log_file, "%s.%d", LAST_LOG_FILE, i); + if (ret == -1) { + // memory allocation failure - return early. Should never happen. + return; + } + if ((ensure_path_mounted(log_file) != 0) || (access(log_file, R_OK) == -1)) { + free(log_file); + } else { + entries[n++] = log_file; + } - char* kmsg_file; - ret = (i == 0) ? asprintf(&kmsg_file, "%s", LAST_KMSG_FILE) : - asprintf(&kmsg_file, "%s.%d", LAST_KMSG_FILE, i); - if (ret == -1) { - // memory allocation failure - return early. Should never happen. - return; + char* kmsg_file; + ret = (i == 0) ? asprintf(&kmsg_file, "%s", LAST_KMSG_FILE) : + asprintf(&kmsg_file, "%s.%d", LAST_KMSG_FILE, i); + if (ret == -1) { + // memory allocation failure - return early. Should never happen. + return; + } + if ((ensure_path_mounted(kmsg_file) != 0) || (access(kmsg_file, R_OK) == -1)) { + free(kmsg_file); + } else { + entries[n++] = kmsg_file; + } } - if ((ensure_path_mounted(kmsg_file) != 0) || (access(kmsg_file, R_OK) == -1)) { - free(kmsg_file); - } else { - entries[n++] = kmsg_file; + } else { + // If cache partition is not found, view /tmp/recovery.log instead. + ui->Print("No /cache partition found.\n"); + if (access(TEMPORARY_LOG_FILE, R_OK) == -1) { + return; + } else{ + entries[n++] = strdup(TEMPORARY_LOG_FILE); } } |