64 lines
1.7 KiB
C++
64 lines
1.7 KiB
C++
////////////////////////////////////////////////////////////////////////////////
|
|
// 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 <stddef.h>
|
|
#include <stdio.h>
|
|
|
|
#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
|