diff options
author | Tianjie Xu <xunchang@google.com> | 2016-08-17 21:02:46 +0200 |
---|---|---|
committer | Tianjie Xu <xunchang@google.com> | 2016-08-18 00:07:50 +0200 |
commit | 62ab2a0fbcbf1da5ae671e7b87143e65ad8616ae (patch) | |
tree | 765f3450ecba5ba4f7c08fd2638a71cf536365d4 /recovery.cpp | |
parent | Add inttypes.h for PRIu64. (diff) | |
download | android_bootable_recovery-62ab2a0fbcbf1da5ae671e7b87143e65ad8616ae.tar android_bootable_recovery-62ab2a0fbcbf1da5ae671e7b87143e65ad8616ae.tar.gz android_bootable_recovery-62ab2a0fbcbf1da5ae671e7b87143e65ad8616ae.tar.bz2 android_bootable_recovery-62ab2a0fbcbf1da5ae671e7b87143e65ad8616ae.tar.lz android_bootable_recovery-62ab2a0fbcbf1da5ae671e7b87143e65ad8616ae.tar.xz android_bootable_recovery-62ab2a0fbcbf1da5ae671e7b87143e65ad8616ae.tar.zst android_bootable_recovery-62ab2a0fbcbf1da5ae671e7b87143e65ad8616ae.zip |
Diffstat (limited to '')
-rw-r--r-- | recovery.cpp | 67 |
1 files changed, 36 insertions, 31 deletions
diff --git a/recovery.cpp b/recovery.cpp index cd4f361fe..ccb2d223b 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -1014,45 +1014,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); } } |