Revert "compat/posix: introduce writev(3p) wrapper"
This reverts commit 3b9b2c2a29a1d529ca9884fa0a6529f6e2496abe; let's not use writev() for now.
Junio C Hamano committed
Apr 9, 2026 at 14:48 UTC
7798034171030be0909c56377a4e0e10e6d2df93
5 files changed
-65
Makefile
-4
index 5d22394c2e..cedc234173 100644
--- a/Makefile
+++ b/Makefile
@@ -2029,10 +2029,6 @@ ifdef NO_PREAD
COMPAT_CFLAGS += -DNO_PREAD
COMPAT_OBJS += compat/pread.o
endif
-ifdef NO_WRITEV
- COMPAT_CFLAGS += -DNO_WRITEV
- COMPAT_OBJS += compat/writev.o
-endif
ifdef NO_FAST_WORKING_DIRECTORY
BASIC_CFLAGS += -DNO_FAST_WORKING_DIRECTORY
endif
compat/posix.h
-14
index 94699a03fa..faaae1b655 100644
--- a/compat/posix.h
+++ b/compat/posix.h
@@ -137,9 +137,6 @@
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <sys/statvfs.h>
-#ifndef NO_WRITEV
-#include <sys/uio.h>
-#endif
#include <termios.h>
#ifndef NO_SYS_SELECT_H
#include <sys/select.h>
@@ -326,17 +323,6 @@ int git_lstat(const char *, struct stat *);
ssize_t git_pread(int fd, void *buf, size_t count, off_t offset);
#endif
-#ifdef NO_WRITEV
-#define writev git_writev
-#define iovec git_iovec
-struct git_iovec {
- void *iov_base;
- size_t iov_len;
-};
-
-ssize_t git_writev(int fd, const struct iovec *iov, int iovcnt);
-#endif
-
#ifdef NO_SETENV
#define setenv gitsetenv
int gitsetenv(const char *, const char *, int);
compat/writev.c
-44
deleted file mode 100644
index 3a94870a2f..0000000000
--- a/compat/writev.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "../git-compat-util.h"
-#include "../wrapper.h"
-
-ssize_t git_writev(int fd, const struct iovec *iov, int iovcnt)
-{
- size_t total_written = 0;
- size_t sum = 0;
-
- /*
- * According to writev(3p), the syscall shall error with EINVAL in case
- * the sum of `iov_len` overflows `ssize_t`.
- */
- for (int i = 0; i < iovcnt; i++) {
- if (iov[i].iov_len > maximum_signed_value_of_type(ssize_t) ||
- iov[i].iov_len + sum > maximum_signed_value_of_type(ssize_t)) {
- errno = EINVAL;
- return -1;
- }
-
- sum += iov[i].iov_len;
- }
-
- for (int i = 0; i < iovcnt; i++) {
- const char *bytes = iov[i].iov_base;
- size_t iovec_written = 0;
-
- while (iovec_written < iov[i].iov_len) {
- ssize_t bytes_written = xwrite(fd, bytes + iovec_written,
- iov[i].iov_len - iovec_written);
- if (bytes_written < 0) {
- if (total_written)
- goto out;
- return bytes_written;
- }
- if (!bytes_written)
- goto out;
- iovec_written += bytes_written;
- total_written += bytes_written;
- }
- }
-
-out:
- return (ssize_t) total_written;
-}
config.mak.uname
-2
index ccb3f71881..5feb582558 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -459,7 +459,6 @@ ifeq ($(uname_S),Windows)
SANE_TOOL_PATH ?= $(msvc_bin_dir_msys)
HAVE_ALLOCA_H = YesPlease
NO_PREAD = YesPlease
- NO_WRITEV = YesPlease
NEEDS_CRYPTO_WITH_SSL = YesPlease
NO_LIBGEN_H = YesPlease
NO_POLL = YesPlease
@@ -675,7 +674,6 @@ ifeq ($(uname_S),MINGW)
pathsep = ;
HAVE_ALLOCA_H = YesPlease
NO_PREAD = YesPlease
- NO_WRITEV = YesPlease
NEEDS_CRYPTO_WITH_SSL = YesPlease
NO_LIBGEN_H = YesPlease
NO_POLL = YesPlease
meson.build
-1
index 8309942d18..11488623bf 100644
--- a/meson.build
+++ b/meson.build
@@ -1429,7 +1429,6 @@ checkfuncs = {
'initgroups' : [],
'strtoumax' : ['strtoumax.c', 'strtoimax.c'],
'pread' : ['pread.c'],
- 'writev' : ['writev.c'],
}
if host_machine.system() == 'windows'