1*3f982cf4SFabien Sanglard // Copyright 2019 The Chromium Authors. All rights reserved. 2*3f982cf4SFabien Sanglard // Use of this source code is governed by a BSD-style license that can be 3*3f982cf4SFabien Sanglard // found in the LICENSE file. 4*3f982cf4SFabien Sanglard 5*3f982cf4SFabien Sanglard #include "testing/util/read_file.h" 6*3f982cf4SFabien Sanglard 7*3f982cf4SFabien Sanglard #include <stdio.h> 8*3f982cf4SFabien Sanglard 9*3f982cf4SFabien Sanglard namespace openscreen { 10*3f982cf4SFabien Sanglard ReadEntireFileToString(absl::string_view filename)11*3f982cf4SFabien Sanglardstd::string ReadEntireFileToString(absl::string_view filename) { 12*3f982cf4SFabien Sanglard FILE* file = fopen(filename.data(), "r"); 13*3f982cf4SFabien Sanglard if (file == nullptr) { 14*3f982cf4SFabien Sanglard return {}; 15*3f982cf4SFabien Sanglard } 16*3f982cf4SFabien Sanglard fseek(file, 0, SEEK_END); 17*3f982cf4SFabien Sanglard long file_size = ftell(file); 18*3f982cf4SFabien Sanglard fseek(file, 0, SEEK_SET); 19*3f982cf4SFabien Sanglard std::string contents(file_size, 0); 20*3f982cf4SFabien Sanglard int bytes_read = 0; 21*3f982cf4SFabien Sanglard while (bytes_read < file_size) { 22*3f982cf4SFabien Sanglard size_t ret = fread(&contents[bytes_read], 1, file_size - bytes_read, file); 23*3f982cf4SFabien Sanglard if (ret == 0 && ferror(file)) { 24*3f982cf4SFabien Sanglard return {}; 25*3f982cf4SFabien Sanglard } else { 26*3f982cf4SFabien Sanglard bytes_read += ret; 27*3f982cf4SFabien Sanglard } 28*3f982cf4SFabien Sanglard } 29*3f982cf4SFabien Sanglard fclose(file); 30*3f982cf4SFabien Sanglard 31*3f982cf4SFabien Sanglard return contents; 32*3f982cf4SFabien Sanglard } 33*3f982cf4SFabien Sanglard 34*3f982cf4SFabien Sanglard } // namespace openscreen 35