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
@@ -2029,10 +2029,6 @@ ifdef NO_PREAD
2029
COMPAT_CFLAGS += -DNO_PREAD
2030
COMPAT_OBJS += compat/pread.o
2031
endif
2032
-ifdef NO_WRITEV
2033
- COMPAT_CFLAGS += -DNO_WRITEV
2034
- COMPAT_OBJS += compat/writev.o
2035
-endif
2032
ifdef NO_FAST_WORKING_DIRECTORY
2033
BASIC_CFLAGS += -DNO_FAST_WORKING_DIRECTORY
2034
endif
compat/posix.h
-14
@@ -137,9 +137,6 @@
137
#include <sys/socket.h>
138
#include <sys/ioctl.h>
139
#include <sys/statvfs.h>
140
-#ifndef NO_WRITEV
141
-#include <sys/uio.h>
142
-#endif
140
#include <termios.h>
141
#ifndef NO_SYS_SELECT_H
142
#include <sys/select.h>
@@ -326,17 +323,6 @@ int git_lstat(const char *, struct stat *);
323
ssize_t git_pread(int fd, void *buf, size_t count, off_t offset);
324
#endif
325
329
-#ifdef NO_WRITEV
330
-#define writev git_writev
331
-#define iovec git_iovec
332
-struct git_iovec {
333
- void *iov_base;
334
- size_t iov_len;
335
-};
336
-
337
-ssize_t git_writev(int fd, const struct iovec *iov, int iovcnt);
338
-#endif
339
-
326
#ifdef NO_SETENV
327
#define setenv gitsetenv
328
int gitsetenv(const char *, const char *, int);
compat/writev.c
deleted
-44
@@ -1,44 +0,0 @@
1
-#include "../git-compat-util.h"
2
-#include "../wrapper.h"
3
-
4
-ssize_t git_writev(int fd, const struct iovec *iov, int iovcnt)
5
-{
6
- size_t total_written = 0;
7
- size_t sum = 0;
8
-
9
- /*
10
- * According to writev(3p), the syscall shall error with EINVAL in case
11
- * the sum of `iov_len` overflows `ssize_t`.
12
- */
13
- for (int i = 0; i < iovcnt; i++) {
14
- if (iov[i].iov_len > maximum_signed_value_of_type(ssize_t) ||
15
- iov[i].iov_len + sum > maximum_signed_value_of_type(ssize_t)) {
16
- errno = EINVAL;
17
- return -1;
18
- }
19
-
20
- sum += iov[i].iov_len;
21
- }
22
-
23
- for (int i = 0; i < iovcnt; i++) {
24
- const char *bytes = iov[i].iov_base;
25
- size_t iovec_written = 0;
26
-
27
- while (iovec_written < iov[i].iov_len) {
28
- ssize_t bytes_written = xwrite(fd, bytes + iovec_written,
29
- iov[i].iov_len - iovec_written);
30
- if (bytes_written < 0) {
31
- if (total_written)
32
- goto out;
33
- return bytes_written;
34
- }
35
- if (!bytes_written)
36
- goto out;
37
- iovec_written += bytes_written;
38
- total_written += bytes_written;
39
- }
40
- }
41
-
42
-out:
43
- return (ssize_t) total_written;
44
-}
config.mak.uname
-2
@@ -459,7 +459,6 @@ ifeq ($(uname_S),Windows)
459
SANE_TOOL_PATH ?= $(msvc_bin_dir_msys)
460
HAVE_ALLOCA_H = YesPlease
461
NO_PREAD = YesPlease
462
- NO_WRITEV = YesPlease
462
NEEDS_CRYPTO_WITH_SSL = YesPlease
463
NO_LIBGEN_H = YesPlease
464
NO_POLL = YesPlease
@@ -675,7 +674,6 @@ ifeq ($(uname_S),MINGW)
674
pathsep = ;
675
HAVE_ALLOCA_H = YesPlease
676
NO_PREAD = YesPlease
678
- NO_WRITEV = YesPlease
677
NEEDS_CRYPTO_WITH_SSL = YesPlease
678
NO_LIBGEN_H = YesPlease
679
NO_POLL = YesPlease
meson.build
-1
@@ -1429,7 +1429,6 @@ checkfuncs = {
1429
'initgroups' : [],
1430
'strtoumax' : ['strtoumax.c', 'strtoimax.c'],
1431
'pread' : ['pread.c'],
1432
- 'writev' : ['writev.c'],
1432
}
1433
1434
if host_machine.system() == 'windows'