| // Copyright 2019 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "testing/util/read_file.h" |
| |
| #include <stdio.h> |
| |
| namespace openscreen { |
| |
| std::string ReadEntireFileToString(absl::string_view filename) { |
| FILE* file = fopen(filename.data(), "r"); |
| if (file == nullptr) { |
| return {}; |
| } |
| fseek(file, 0, SEEK_END); |
| long file_size = ftell(file); |
| fseek(file, 0, SEEK_SET); |
| std::string contents(file_size, 0); |
| int bytes_read = 0; |
| while (bytes_read < file_size) { |
| size_t ret = fread(&contents[bytes_read], 1, file_size - bytes_read, file); |
| if (ret == 0 && ferror(file)) { |
| return {}; |
| } else { |
| bytes_read += ret; |
| } |
| } |
| fclose(file); |
| |
| return contents; |
| } |
| |
| } // namespace openscreen |