aboutsummaryrefslogtreecommitdiff
path: root/util/env.cc
diff options
context:
space:
mode:
Diffstat (limited to 'util/env.cc')
-rw-r--r--util/env.cc18
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;