| // Copyright 2019 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "util/read_file.h" | |
| #include <stdio.h> | |
| namespace openscreen { | |
| std::string ReadEntireFileToString(std::string_view filename) { | |
| FILE* file = fopen(filename.data(), "r"); | |
| if (file == nullptr) { | |
| return {}; | |
| } | |
| fseek(file, 0, SEEK_END); | |
| long file_size = ftell(file); // NOLINT | |
| 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 |