metadata times: -U/--atimes, -N/--crtimes, --open-noatime, -O/-J
CI / lint (pull_request) Successful in 52s
CI / sanitizers (address) (pull_request) Skipped
CI / sanitizers (undefined) (pull_request) Skipped
CI / fuzz-build (pull_request) Skipped
CI / coverage (pull_request) Skipped
CI / valgrind (pull_request) Skipped
CI / build-and-test (pull_request) Successful in 1m19s

Capture+transmit source atime (pre-read stat; O_NOATIME sender guard) and birth
time (statx STATX_BTIME); receiver restores atime with mtime (crtime not settable
portably -> transmitted, explicitly not applied). --open-noatime is client-only.
-O/-J documented as accepted no-ops (FastSync never preserves dir/symlink times).
Wire: metadata frame gains atime/crtime val+sec+nsec; PROTOCOL_VERSION
2.11.0->2.12.0. Review fixes: gate atime capture to Linux (no epoch clobber on
non-Linux), close fd on fdopen failure, honest -O/-J status (Compat no-op).
This commit is contained in:
2026-09-08 20:58:56 +02:00
parent cbb09e41ab
commit e80888ce7b
21 changed files with 767 additions and 28 deletions
+1 -1
View File
@@ -106,7 +106,7 @@ static void test_fuzz_metadata_from_buf() {
struct stat st;
EXPECT_EQ_INT(stat("fuzz_meta_test.txt", &st), 0);
FileMetadata* meta = file_metadata_create(&st);
FileMetadata* meta = file_metadata_create("fuzz_meta_test.txt", &st, false, false);
EXPECT_NOT_NULL(meta);
EXPECT_EQ_INT((int)meta->mode, (int)st.st_mode);
EXPECT_EQ_INT((int)meta->mtime_sec, (int)st.st_mtime);