Hi, this is the third version of my patch series that continues to detangle the reftable library from the Git codebase. There is only a single change compared to v2, which is a clarification that `tmpfile_rename()` also deactivates the underlying tmpfile. Thanks! Patrick Patrick Steinhardt (7): reftable/system: move "dir.h" to its only user reftable: explicitly handle hash format IDs reftable/system: stop depending on "hash.h" reftable/stack: stop using `fsync_component()` directly reftable/system: provide thin wrapper for tempfile subsystem reftable/stack: drop only use of `get_locked_file_path()` reftable/system: provide thin wrapper for lockfile subsystem Makefile | 1 + refs/reftable-backend.c | 19 +++- reftable/basics.c | 13 ++- reftable/basics.h | 10 +- reftable/merged.c | 4 +- reftable/merged.h | 3 +- reftable/reader.c | 14 ++- reftable/reader.h | 4 +- reftable/reftable-basics.h | 13 +++ reftable/reftable-merged.h | 4 +- reftable/reftable-reader.h | 2 +- reftable/reftable-record.h | 12 +- reftable/reftable-writer.h | 8 +- reftable/stack.c | 171 ++++++++++++++-------------- reftable/system.c | 126 ++++++++++++++++++++ reftable/system.h | 89 ++++++++++++++- reftable/writer.c | 20 +++- t/helper/test-reftable.c | 4 +- t/unit-tests/lib-reftable.c | 5 +- t/unit-tests/lib-reftable.h | 2 +- t/unit-tests/t-reftable-block.c | 41 +++---- t/unit-tests/t-reftable-merged.c | 26 ++--- t/unit-tests/t-reftable-pq.c | 3 +- t/unit-tests/t-reftable-reader.c | 4 +- t/unit-tests/t-reftable-readwrite.c | 41 +++---- t/unit-tests/t-reftable-record.c | 59 +++++----- t/unit-tests/t-reftable-stack.c | 37 +++--- 27 files changed, 506 insertions(+), 229 deletions(-) create mode 100644 reftable/system.c Range-diff against v2: 1: 2b7d4e28529 = 1: 2b7d4e28529 reftable/system: move "dir.h" to its only user 2: 38cfe85bf5b = 2: 38cfe85bf5b reftable: explicitly handle hash format IDs 3: 745c1a070dd = 3: 745c1a070dd reftable/system: stop depending on "hash.h" 4: 7782652b975 = 4: 7782652b975 reftable/stack: stop using `fsync_component()` directly 5: b15daefbc83 ! 5: 430be1045d6 reftable/system: provide thin wrapper for tempfile subsystem @@ reftable/system.h: license that can be found in the LICENSE file or at + +/* + * Rename the temporary file to the provided path. The temporary file must be -+ * active. Return 0 on success, a reftable error code on error. ++ * active. Return 0 on success, a reftable error code on error. Deactivates the ++ * temporary file. + */ +int tmpfile_rename(struct reftable_tmpfile *t, const char *path); 6: 83949837a29 = 6: b9ffdc605b9 reftable/stack: drop only use of `get_locked_file_path()` 7: 80fe5bc5e10 = 7: e1ac1cc2e67 reftable/system: provide thin wrapper for lockfile subsystem -- 2.47.0.274.g962d0b743d.dirty