| // Copyright 2016 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROMIUMOS_WIDE_PROFILING_FILE_UTILS_H_ |
| #define CHROMIUMOS_WIDE_PROFILING_FILE_UTILS_H_ |
| |
| #include <vector> |
| |
| #include "chromiumos-wide-profiling/compat/string.h" |
| |
| namespace quipper { |
| |
| // Reads the contents of a file into |contents|. Returns true on success, false |
| // if it fails. |
| bool FileToBuffer(const string& filename, std::vector<char>* contents); |
| |
| // Writes |contents| to a file, overwriting the file if it exists. Returns true |
| // on success, false if it fails. |
| template <typename CharContainer> |
| bool BufferToFile(const string& filename, const CharContainer& contents) { |
| FILE* fp = fopen(filename.c_str(), "wb"); |
| if (!fp) |
| return false; |
| // Do not write anything if |contents| contains nothing. fopen will create |
| // an empty file. |
| if (!contents.empty()) { |
| CHECK_EQ(fwrite(contents.data(), |
| sizeof(typename CharContainer::value_type), |
| contents.size(), |
| fp), |
| contents.size()); |
| } |
| fclose(fp); |
| return true; |
| } |
| |
| // Returns true iff the file exists. |
| bool FileExists(const string& filename); |
| |
| } // namespace quipper |
| |
| #endif // CHROMIUMOS_WIDE_PROFILING_FILE_UTILS_H_ |