mirror of
https://github.com/git-for-windows/git.git
synced 2026-04-11 01:53:21 -05:00
Users of the reftable library are expected to provide their own function callback in cases they want to sync(3p) data to disk via the reftable write options. But if no such function was provided we end up calling fsync(3p) directly, which may not even be available on some systems. While dropping the explicit call to fsync(3p) would work, it would lead to an unsafe default behaviour where a project may have forgotten to set up the callback function, and that could lead to potential data loss. So this is not a great solution. Instead, drop the callback function and make it mandatory for the project to define fsync(3p). In the case of Git, we can then easily inject our custom implementation via the "reftable-system.h" header so that we continue to use `fsync_component()`. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
19 lines
521 B
C
19 lines
521 B
C
#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"
|
|
|
|
int reftable_fsync(int fd);
|
|
#define fsync(fd) reftable_fsync(fd)
|
|
|
|
#endif
|