Merge "screen_ui: Drop the dependency on common.h." am: 738a4258d8
am: 30f2775b37
Change-Id: Id553c1f1de86fa292c0327f6fcc00fb8cd17bec3
diff --git a/recovery.cpp b/recovery.cpp
index 4259c83..f820373 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -820,7 +820,7 @@
std::bind(&Device::HandleMenuKey, device, std::placeholders::_1, std::placeholders::_2));
if (entries[chosen_item] == "Back") break;
- ui->ShowFile(entries[chosen_item].c_str());
+ ui->ShowFile(entries[chosen_item]);
}
}
diff --git a/screen_ui.cpp b/screen_ui.cpp
index aaeb18c..00ed45d 100644
--- a/screen_ui.cpp
+++ b/screen_ui.cpp
@@ -42,7 +42,6 @@
#include <android-base/strings.h>
#include <minui/minui.h>
-#include "common.h"
#include "device.h"
#include "ui.h"
@@ -951,10 +950,10 @@
}
}
-void ScreenRecoveryUI::ShowFile(const char* filename) {
- FILE* fp = fopen_path(filename, "re");
- if (fp == nullptr) {
- Print(" Unable to open %s: %s\n", filename, strerror(errno));
+void ScreenRecoveryUI::ShowFile(const std::string& filename) {
+ std::unique_ptr<FILE, decltype(&fclose)> fp(fopen(filename.c_str(), "re"), fclose);
+ if (!fp) {
+ Print(" Unable to open %s: %s\n", filename.c_str(), strerror(errno));
return;
}
@@ -966,8 +965,7 @@
text_ = file_viewer_text_;
ClearText();
- ShowFile(fp);
- fclose(fp);
+ ShowFile(fp.get());
text_ = old_text;
text_col_ = old_text_col;
diff --git a/screen_ui.h b/screen_ui.h
index 837d346..986959c 100644
--- a/screen_ui.h
+++ b/screen_ui.h
@@ -133,7 +133,7 @@
// printing messages
void Print(const char* fmt, ...) override __printflike(2, 3);
void PrintOnScreenOnly(const char* fmt, ...) override __printflike(2, 3);
- void ShowFile(const char* filename) override;
+ void ShowFile(const std::string& filename) override;
// menu display
int ShowMenu(const char* const* headers, const char* const* items, int initial_selection,
diff --git a/stub_ui.h b/stub_ui.h
index 3c36fcf..362aab4 100644
--- a/stub_ui.h
+++ b/stub_ui.h
@@ -17,6 +17,9 @@
#ifndef RECOVERY_STUB_UI_H
#define RECOVERY_STUB_UI_H
+#include <functional>
+#include <string>
+
#include "ui.h"
// Stub implementation of RecoveryUI for devices without screen.
@@ -51,7 +54,7 @@
va_end(ap);
}
void PrintOnScreenOnly(const char* /* fmt */, ...) override {}
- void ShowFile(const char* /* filename */) override {}
+ void ShowFile(const std::string& /* filename */) override {}
// menu display
int ShowMenu(const char* const* /* headers */, const char* const* /* items */,
diff --git a/ui.h b/ui.h
index 636c2ff..c468992 100644
--- a/ui.h
+++ b/ui.h
@@ -88,7 +88,9 @@
virtual void Print(const char* fmt, ...) __printflike(2, 3) = 0;
virtual void PrintOnScreenOnly(const char* fmt, ...) __printflike(2, 3) = 0;
- virtual void ShowFile(const char* filename) = 0;
+ // Shows the contents of the given file. Caller ensures the patition that contains the file has
+ // been mounted.
+ virtual void ShowFile(const std::string& filename) = 0;
// --- key handling ---