]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Revert "compat/posix: introduce writev(3p) wrapper"
authorJunio C Hamano <gitster@pobox.com>
Thu, 9 Apr 2026 21:48:24 +0000 (14:48 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 9 Apr 2026 21:48:24 +0000 (14:48 -0700)
This reverts commit 3b9b2c2a29a1d529ca9884fa0a6529f6e2496abe; let's
not use writev() for now.

Makefile
compat/posix.h
compat/writev.c [deleted file]
config.mak.uname
meson.build

index 5d22394c2ec1a628e4aa7ecbc8a6e5af72da750e..cedc234173e3774132d45709b3f968d083a013a0 100644 (file)
--- 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
index 94699a03fa5d6923e4380e3f95b234a69bc8e7de..faaae1b6555d1b03eb7c97a337701456cc81091e 100644 (file)
 #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);
diff --git a/compat/writev.c b/compat/writev.c
deleted file mode 100644 (file)
index 3a94870..0000000
+++ /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;
-}
index ccb3f718812740d2feda1d212e1e95ea7222c4f3..5feb5825587e65f62a4ccbb507fbccd9f062693f 100644 (file)
@@ -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
index 8309942d184847ea6434bae30e81dbbbf175192d..11488623bfd8f8303cb3e870d700b2072cffffdb 100644 (file)
@@ -1429,7 +1429,6 @@ checkfuncs = {
   'initgroups' : [],
   'strtoumax' : ['strtoumax.c', 'strtoimax.c'],
   'pread' : ['pread.c'],
-  'writev' : ['writev.c'],
 }
 
 if host_machine.system() == 'windows'