reftable: introduce "reftable-system.h" header

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>
maint
Patrick Steinhardt 2026-04-02 09:31:14 +02:00 committed by Junio C Hamano
parent 270e10ad6d
commit 34c17b840d
13 changed files with 34 additions and 12 deletions

View File

@ -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 {

View File

@ -9,8 +9,7 @@
#ifndef REFTABLE_BLOCK_H
#define REFTABLE_BLOCK_H

#include <stdint.h>

#include "reftable-system.h"
#include "reftable-basics.h"
#include "reftable-blocksource.h"
#include "reftable-iterator.h"

View File

@ -9,7 +9,7 @@
#ifndef REFTABLE_BLOCKSOURCE_H
#define REFTABLE_BLOCKSOURCE_H

#include <stdint.h>
#include "reftable-system.h"

/*
* Generic wrapper for a seekable readable file.

View File

@ -9,6 +9,8 @@
#ifndef REFTABLE_ERROR_H
#define REFTABLE_ERROR_H

#include "reftable-system.h"

/*
* Errors in reftable calls are signaled with negative integer return values. 0
* means success.

View File

@ -1,6 +1,7 @@
#ifndef REFTABLE_FSCK_H
#define REFTABLE_FSCK_H

#include "reftable-system.h"
#include "reftable-stack.h"

enum reftable_fsck_error {

View File

@ -9,6 +9,7 @@
#ifndef REFTABLE_ITERATOR_H
#define REFTABLE_ITERATOR_H

#include "reftable-system.h"
#include "reftable-record.h"

struct reftable_iterator_vtable;

View File

@ -9,6 +9,7 @@
#ifndef REFTABLE_MERGED_H
#define REFTABLE_MERGED_H

#include "reftable-system.h"
#include "reftable-iterator.h"

/*

View File

@ -9,8 +9,8 @@
#ifndef REFTABLE_RECORD_H
#define REFTABLE_RECORD_H

#include "reftable-system.h"
#include "reftable-basics.h"
#include <stdint.h>

/*
* Basic data types

View File

@ -9,6 +9,7 @@
#ifndef REFTABLE_STACK_H
#define REFTABLE_STACK_H

#include "reftable-system.h"
#include "reftable-writer.h"

/*

View File

@ -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

View File

@ -9,6 +9,7 @@
#ifndef REFTABLE_TABLE_H
#define REFTABLE_TABLE_H

#include "reftable-system.h"
#include "reftable-iterator.h"
#include "reftable-block.h"
#include "reftable-blocksource.h"

View File

@ -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. */

View File

@ -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