// <path_index> ::= uint32_t
// <digest> ::= Digest::size() bytes
// <fsize> ::= uint64_t ; file size
-// <mtime> ::= int64_t ; modification time
-// <ctime> ::= int64_t ; status change time
+// <mtime> ::= int64_t ; modification time (ns), 0 = not recorded
+// <ctime> ::= int64_t ; status change time (ns), 0 = not recorded
// <results> ::= <n_results> <result>*
// <n_results> ::= uint32_t
// <result> ::= <n_indexes> <include_index>* <key>
namespace core {
+// Format version history:
+//
+// Version 0:
+// - First version.
+// Version 1:
+// - mtime and ctime are now stored with nanoseconds resolution.
const uint8_t Manifest::k_format_version = 1;
void
reader.read_int(entry.index);
reader.read_and_copy_bytes({entry.digest.bytes(), Digest::size()});
reader.read_int(entry.fsize);
- entry.mtime.set_sec(reader.read_int<int64_t>());
- entry.ctime.set_sec(reader.read_int<int64_t>());
+ entry.mtime.set_nsec(reader.read_int<int64_t>());
+ entry.ctime.set_nsec(reader.read_int<int64_t>());
}
const auto result_count = reader.read_int<uint32_t>();
writer.write_int<uint32_t>(file_info.index);
writer.write_bytes({file_info.digest.bytes(), Digest::size()});
writer.write_int(file_info.fsize);
- writer.write_int(file_info.mtime.sec());
- writer.write_int(file_info.ctime.sec());
+ writer.write_int(file_info.mtime.nsec());
+ writer.write_int(file_info.ctime.nsec());
}
writer.write_int<uint32_t>(m_results.size());
PRINT(stream, " Path index: {}\n", m_file_infos[i].index);
PRINT(stream, " Hash: {}\n", m_file_infos[i].digest.to_string());
PRINT(stream, " File size: {}\n", m_file_infos[i].fsize);
- if (m_file_infos[i].mtime == util::TimePoint(-1)) {
+ if (m_file_infos[i].mtime == util::TimePoint()) {
PRINT_RAW(stream, " Mtime: -\n");
} else {
- PRINT(stream, " Mtime: {}\n", m_file_infos[i].mtime.sec());
+ PRINT(stream,
+ " Mtime: {}.{:09}\n",
+ m_file_infos[i].mtime.sec(),
+ m_file_infos[i].mtime.nsec_decimal_part());
}
- if (m_file_infos[i].ctime == util::TimePoint(-1)) {
+ if (m_file_infos[i].ctime == util::TimePoint()) {
PRINT_RAW(stream, " Ctime: -\n");
} else {
- PRINT(stream, " Ctime: {}\n", m_file_infos[i].ctime.sec());
+ PRINT(stream,
+ " Ctime: {}.{:09}\n",
+ m_file_infos[i].ctime.sec(),
+ m_file_infos[i].ctime.nsec_decimal_part());
}
}