summaryrefslogtreecommitdiff
path: root/object-file.c
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2025-04-15 11:38:16 +0200
committerJunio C Hamano <gitster@pobox.com>2025-04-15 08:24:35 -0700
commit97dc141fd676e7079c2fd51e3bea2681a5b9f824 (patch)
treefb8a738d18be7814be0ed6dc2ad07e4e84d3cbfc /object-file.c
parent1a99fe8010642a71063536510c578c1543d763b4 (diff)
object-file: move `git_open_cloexec()` to "compat/open.c"
The `git_open_cloexec()` wrapper function provides the ability to open a file with `O_CLOEXEC` in a platform-agnostic way. This function is provided by "object-file.c" even though it is not specific to the object subsystem at all. Move the file into "compat/open.c". This file already exists before this commit, but has only been compiled conditionally depending on whether or not open(3p) may return EINTR. With this change we now unconditionally compile the object, but wrap `git_open_with_retry()` in an ifdef. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'object-file.c')
-rw-r--r--object-file.c27
1 files changed, 0 insertions, 27 deletions
diff --git a/object-file.c b/object-file.c
index 6228e1c40f..c3e20417f3 100644
--- a/object-file.c
+++ b/object-file.c
@@ -833,33 +833,6 @@ int stream_object_signature(struct repository *r, const struct object_id *oid)
return !oideq(oid, &real_oid) ? -1 : 0;
}
-int git_open_cloexec(const char *name, int flags)
-{
- int fd;
- static int o_cloexec = O_CLOEXEC;
-
- fd = open(name, flags | o_cloexec);
- if ((o_cloexec & O_CLOEXEC) && fd < 0 && errno == EINVAL) {
- /* Try again w/o O_CLOEXEC: the kernel might not support it */
- o_cloexec &= ~O_CLOEXEC;
- fd = open(name, flags | o_cloexec);
- }
-
-#if defined(F_GETFD) && defined(F_SETFD) && defined(FD_CLOEXEC)
- {
- static int fd_cloexec = FD_CLOEXEC;
-
- if (!o_cloexec && 0 <= fd && fd_cloexec) {
- /* Opened w/o O_CLOEXEC? try with fcntl(2) to add it */
- int flags = fcntl(fd, F_GETFD);
- if (fcntl(fd, F_SETFD, flags | fd_cloexec))
- fd_cloexec = 0;
- }
- }
-#endif
- return fd;
-}
-
/*
* Find "oid" as a loose object in the local repository or in an alternate.
* Returns 0 on success, negative on failure.