Add an alternate screen for viewing recovery logs.
This makes it easier to go back and forth without losing current output.
Also make the display more like regular more(1).
Bug: http://b/20834540
Change-Id: Icc5703e9c8a378cc7072d8ebb79e34451267ee1b
diff --git a/recovery.cpp b/recovery.cpp
index 2c78baf..80a8c7b 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -701,12 +701,11 @@
}
static void choose_recovery_file(Device* device) {
- // "Go back" + KEEP_LOG_COUNT * 2 + terminating nullptr entry
- char* entries[KEEP_LOG_COUNT * 2 + 2];
+ // "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;
- entries[n++] = strdup("Go back");
// Add LAST_LOG_FILE + LAST_LOG_FILE.x
// Add LAST_KMSG_FILE + LAST_KMSG_FILE.x
@@ -734,11 +733,13 @@
}
}
+ entries[n++] = strdup("Back");
+
const char* headers[] = { "Select file to view", nullptr };
while (true) {
int chosen_item = get_menu_selection(headers, entries, 1, 0, device);
- if (chosen_item == 0) break;
+ if (strcmp(entries[chosen_item], "Back") == 0) break;
// TODO: do we need to redirect? ShowFile could just avoid writing to stdio.
redirect_stdio("/dev/null");