diff options
| -rw-r--r-- | file.cpp | 8 | ||||
| -rw-r--r-- | tests/test-file.cpp | 3 | 
2 files changed, 10 insertions, 1 deletions
| @@ -8,10 +8,16 @@ using namespace std::string_literals;  std::string Reichwein::File::getFile(const fs::path& filename)  { - std::ifstream file(filename.string(), std::ios::in | std::ios::binary | std::ios::ate); + std::ifstream file(filename.string(), std::ios::in | std::ios::binary);   if (file.is_open()) { +  file.seekg(0, std::ios::end);    std::ifstream::pos_type fileSize = file.tellg(); +  if (fileSize < 0) { // on pseudo-files (e.g. /proc/*), this doesn't work. Use a slower workaround: +   std::stringstream buffer; +   buffer << file.rdbuf(); +   return buffer.str(); +  }    file.seekg(0, std::ios::beg);    std::string bytes(fileSize, ' '); diff --git a/tests/test-file.cpp b/tests/test-file.cpp new file mode 100644 index 0000000..13d0ded --- /dev/null +++ b/tests/test-file.cpp @@ -0,0 +1,3 @@ +getFile + +getFile /proc | 
