//////////////////////////////////////////////////////////////////////////////// // Copyright 2016 Google LLC. // // This software is licensed under the terms defined in the Widevine Master // License Agreement. For a copy of this agreement, please contact // widevine-licensing@google.com. //////////////////////////////////////////////////////////////////////////////// #include "common/file_util.h" #include #include #include "glog/logging.h" namespace widevine { bool GetContents(const std::string& file_name, std::string* contents) { if (file_name.empty()) { LOG(WARNING) << "File name is empty."; return false; } FILE* file = fopen(file_name.c_str(), "r"); if (!file) { LOG(WARNING) << "Unable to open file " << file_name; return false; } contents->clear(); const size_t kReadSize = 0x1000; char buffer[kReadSize]; while (true) { size_t size_read = fread(buffer, sizeof(char), kReadSize, file); if (size_read == 0) break; contents->append(buffer, size_read); } const bool eof = feof(file); fclose(file); if (!eof) { LOG(WARNING) << "Failed to read all file contents."; return false; } return true;; } bool SetContents(const std::string& file_name, const std::string& contents) { if (file_name.empty()) { LOG(WARNING) << "File name is empty."; return false; } FILE* file = fopen(file_name.c_str(), "w"); if (!file) { LOG(WARNING) << "Unable to open file " << file_name; return false; } const size_t size_written = fwrite(contents.data(), sizeof(char), contents.size(), file); if (size_written != contents.size()) LOG(WARNING) << "Failed to write to " << file_name; fclose(file); return size_written == contents.size(); } } // namespace widevine