We're including a couple of standard headers like <stdint.h> in a bunch
of locations, which makes it hard for a project to plug in their own
logic for making required functionality available. For us this is for
example via "compat/posix.h", which already includes all of the system
headers relevant to us.
Introduce a new "reftable-system.h" header that allows projects to
provide their own headers. This new header is supposed to contain all
the project-specific bits to provide the POSIX-like environment, and some
additional supporting code. With this change, we thus have the following
split in our system-specific code:
- "reftable/reftable-system.h" is the project-specific header that
provides a POSIX-like environment. Every project is expected to
provide their own implementation.
- "reftable/system.h" contains the project-independent definition of
the interfaces that a project needs to implement. This file should
not be touched by a project.
- "reftable/system.c" contains the project-specific implementation of
the interfaces defined in "system.h". Again, every project is
expected to provide their own implementation.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Patrick Steinhardt committedApr 2, 2026 at 09:31 UTC34c17b840d5bdb8060ef6309aee04f919616c9de
13 files changed+34-12
reftable/reftable-basics.h
+1-1
index 6d73f19c85..dc8622682d 100644--- a/reftable/reftable-basics.h+++ b/reftable/reftable-basics.h@@ -9,7 +9,7 @@ #ifndef REFTABLE_BASICS_H #define REFTABLE_BASICS_H-#include <stddef.h>+#include "reftable-system.h" /* A buffer that contains arbitrary byte slices. */ struct reftable_buf {
new file mode 100644index 0000000000..4a18a6a790--- /dev/null+++ b/reftable/reftable-system.h@@ -0,0 +1,15 @@+#ifndef REFTABLE_SYSTEM_H+#define REFTABLE_SYSTEM_H++/*+ * This header defines the platform-specific bits required to compile the+ * reftable library. It should provide an environment that bridges over the+ * gaps between POSIX and your system, as well as the zlib interfaces. This+ * header is expected to be changed by the individual project.+ */++#define MINGW_DONT_HANDLE_IN_USE_ERROR+#include "compat/posix.h"+#include "compat/zlib-compat.h"++#endif
index 1e7003cd69..065dd93dc6 100644--- a/reftable/reftable-writer.h+++ b/reftable/reftable-writer.h@@ -9,11 +9,9 @@ #ifndef REFTABLE_WRITER_H #define REFTABLE_WRITER_H+#include "reftable-system.h" #include "reftable-record.h"-#include <stdint.h>-#include <unistd.h> /* ssize_t */- /* Writing single reftables */ /* reftable_write_options sets options for writing a single reftable. */
reftable/system.h
+7-4
index c54ed4cad6..a7eb6acd4a 100644--- a/reftable/system.h+++ b/reftable/system.h@@ -9,11 +9,14 @@ #ifndef SYSTEM_H #define SYSTEM_H-/* This header glues the reftable library to the rest of Git */+/*+ * This header defines the platform-agnostic interface that is to be+ * implemented by the project to make it work on their respective supported+ * systems, and to integrate it into the project itself. This header is not+ * expected to be changed by the individual project.+ */-#define MINGW_DONT_HANDLE_IN_USE_ERROR-#include "compat/posix.h"-#include "compat/zlib-compat.h"+#include "reftable-system.h" /* * Return a random 32 bit integer. This function is expected to return