On Mon, Feb 26, 2024 at 05:05:35PM -0500, Randall S. Becker wrote: > From: "Randall S. Becker" <rsbecker@xxxxxxxxxxxxx> > > 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... > 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. Thanks, Taylor