diff options
Diffstat (limited to 'util/env.cc')
-rw-r--r-- | util/env.cc | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/util/env.cc b/util/env.cc index 594811b..c2600e9 100644 --- a/util/env.cc +++ b/util/env.cc @@ -33,14 +33,18 @@ void Log(Logger* info_log, const char* format, ...) { } } -Status WriteStringToFile(Env* env, const Slice& data, - const std::string& fname) { +static Status DoWriteStringToFile(Env* env, const Slice& data, + const std::string& fname, + bool should_sync) { WritableFile* file; Status s = env->NewWritableFile(fname, &file); if (!s.ok()) { return s; } s = file->Append(data); + if (s.ok() && should_sync) { + s = file->Sync(); + } if (s.ok()) { s = file->Close(); } @@ -51,6 +55,16 @@ Status WriteStringToFile(Env* env, const Slice& data, return s; } +Status WriteStringToFile(Env* env, const Slice& data, + const std::string& fname) { + return DoWriteStringToFile(env, data, fname, false); +} + +Status WriteStringToFileSync(Env* env, const Slice& data, + const std::string& fname) { + return DoWriteStringToFile(env, data, fname, true); +} + Status ReadFileToString(Env* env, const std::string& fname, std::string* data) { data->clear(); SequentialFile* file; |