summaryrefslogtreecommitdiff
path: root/src/support/file.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/support/file.cpp')
-rw-r--r--src/support/file.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/support/file.cpp b/src/support/file.cpp
index d17e3a338..dc9707a1b 100644
--- a/src/support/file.cpp
+++ b/src/support/file.cpp
@@ -34,8 +34,22 @@ std::vector<char> wasm::read_stdin() {
return input;
}
+template<typename T> struct do_read_stdin { T operator()(); };
+
+template<> std::vector<char> do_read_stdin<std::vector<char>>::operator()() {
+ return wasm::read_stdin();
+}
+
+template<> std::string do_read_stdin<std::string>::operator()() {
+ auto vec = wasm::read_stdin();
+ return std::string(vec.begin(), vec.end());
+}
+
template<typename T>
T wasm::read_file(const std::string& filename, Flags::BinaryOption binary) {
+ if (filename == "-") {
+ return do_read_stdin<T>{}();
+ }
BYN_TRACE("Loading '" << filename << "'...\n");
std::ifstream infile;
std::ios_base::openmode flags = std::ifstream::in;