Thread (11 messages) 11 messages, 4 authors, 2024-02-27

RE: [PATCH v1 1/4] builtin/index-pack.c: change xwrite to write_in_full to allow large sizes.

From: <hidden>
Date: 2024-02-26 23:30:47

On Monday, February 26, 2024 5:39 PM, Taylor Blau wrote:
On Mon, Feb 26, 2024 at 05:05:35PM -0500, Randall S. Becker wrote:
quoted
From: "Randall S. Becker" <redacted>

This change is required because some platforms do not support file
writes of arbitrary sizes (e.g, NonStop). xwrite ends up truncating
the output to the maximum single I/O size possible for the destination device.
Hmm. I'm not sure I understand what NonStop's behavior is here...
quoted
diff --git a/builtin/index-pack.c b/builtin/index-pack.c index
a3a37bd215..f80b8d101a 100644
--- a/builtin/index-pack.c
+++ b/builtin/index-pack.c
@@ -1571,7 +1571,7 @@ static void final(const char *final_pack_name, const char *curr_pack_name,
 		 * the last part of the input buffer to stdout.
 		 */
 		while (input_len) {
-			err = xwrite(1, input_buffer + input_offset, input_len);
+			err = write_in_full(1, input_buffer + input_offset, input_len);
 			if (err <= 0)
 				break;
 			input_len -= err;
--
2.42.1
The code above loops while input_len is non-zero, and correctly decrements it by the number of bytes written by xwrite() after each
iteration.

Assuming that xwrite()/write(2) works how I think it does on NonStop, I'm not sure I understand why this change is necessary.
After thinking about it, I'm going to revert the change in this file, so it will not be in v2. I'm a bit uncomfortable with having the write sizes in global, so will drop this bit.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help