From: Junio C Hamano Date: Thu, 9 Apr 2026 21:48:09 +0000 (-0700) Subject: Revert "wrapper: introduce writev(3p) wrappers" X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=dc1b8b2cc8da78c592a54ee4ca3776a7f83cbd31;p=thirdparty%2Fgit.git Revert "wrapper: introduce writev(3p) wrappers" This reverts commit 1970fcef93adcc5a35f6468d00a5a634d5af2b3c; let's not use writev() for now. --- diff --git a/wrapper.c b/wrapper.c index be8fa575e6..16f5a63fbb 100644 --- a/wrapper.c +++ b/wrapper.c @@ -323,47 +323,6 @@ ssize_t write_in_full(int fd, const void *buf, size_t count) return total; } -ssize_t writev_in_full(int fd, struct iovec *iov, int iovcnt) -{ - ssize_t total_written = 0; - - while (iovcnt) { - ssize_t bytes_written = writev(fd, iov, iovcnt); - if (bytes_written < 0) { - if (errno == EINTR || errno == EAGAIN) - continue; - return -1; - } - if (!bytes_written) { - errno = ENOSPC; - return -1; - } - - total_written += bytes_written; - - /* - * We first need to discard any iovec entities that have been - * fully written. - */ - while (iovcnt && (size_t)bytes_written >= iov->iov_len) { - bytes_written -= iov->iov_len; - iov++; - iovcnt--; - } - - /* - * Finally, we need to adjust the last iovec in case we have - * performed a partial write. - */ - if (iovcnt && bytes_written) { - iov->iov_base = (char *) iov->iov_base + bytes_written; - iov->iov_len -= bytes_written; - } - } - - return total_written; -} - ssize_t pread_in_full(int fd, void *buf, size_t count, off_t offset) { char *p = buf; diff --git a/wrapper.h b/wrapper.h index 27519b32d1..15ac3bab6e 100644 --- a/wrapper.h +++ b/wrapper.h @@ -47,15 +47,6 @@ ssize_t read_in_full(int fd, void *buf, size_t count); ssize_t write_in_full(int fd, const void *buf, size_t count); ssize_t pread_in_full(int fd, void *buf, size_t count, off_t offset); -/* - * Try to write all iovecs. Returns -1 in case an error occurred with a proper - * errno set, the number of bytes written otherwise. - * - * Note that the iovec will be modified as a result of this call to adjust for - * partial writes! - */ -ssize_t writev_in_full(int fd, struct iovec *iov, int iovcnt); - static inline ssize_t write_str_in_full(int fd, const char *str) { return write_in_full(fd, str, strlen(str)); diff --git a/write-or-die.c b/write-or-die.c index 5f522fb728..01a9a51fa2 100644 --- a/write-or-die.c +++ b/write-or-die.c @@ -96,14 +96,6 @@ void write_or_die(int fd, const void *buf, size_t count) } } -void writev_or_die(int fd, struct iovec *iov, int iovlen) -{ - if (writev_in_full(fd, iov, iovlen) < 0) { - check_pipe(errno); - die_errno("writev error"); - } -} - void fwrite_or_die(FILE *f, const void *buf, size_t count) { if (fwrite(buf, 1, count, f) != count) diff --git a/write-or-die.h b/write-or-die.h index a045bdfaef..ff0408bd84 100644 --- a/write-or-die.h +++ b/write-or-die.h @@ -7,7 +7,6 @@ void fprintf_or_die(FILE *, const char *fmt, ...); void fwrite_or_die(FILE *f, const void *buf, size_t count); void fflush_or_die(FILE *f); void write_or_die(int fd, const void *buf, size_t count); -void writev_or_die(int fd, struct iovec *iov, int iovlen); /* * These values are used to help identify parts of a repository to fsync.