| 121 | } |
| 122 | |
| 123 | Status SetCurrentFile(Env* env, const std::string& dbname, |
| 124 | uint64_t descriptor_number) { |
| 125 | // Remove leading "dbname/" and add newline to manifest file name |
| 126 | std::string manifest = DescriptorFileName(dbname, descriptor_number); |
| 127 | Slice contents = manifest; |
| 128 | assert(contents.starts_with(dbname + "/")); |
| 129 | contents.remove_prefix(dbname.size() + 1); |
| 130 | std::string tmp = TempFileName(dbname, descriptor_number); |
| 131 | Status s = WriteStringToFileSync(env, contents.ToString() + "\n", tmp); |
| 132 | if (s.ok()) { |
| 133 | s = env->RenameFile(tmp, CurrentFileName(dbname)); |
| 134 | } |
| 135 | if (!s.ok()) { |
| 136 | env->DeleteFile(tmp); |
| 137 | } |
| 138 | return s; |
| 139 | } |
| 140 | |
| 141 | } // namespace leveldb |
no test coverage detected