Message ID | 20240226220539.3494-5-randall.becker@nexbridge.ca (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Change xwrite() to write_in_full() in builtins. | expand |
"Randall S. Becker" <the.n.e.key@gmail.com> writes: > From: "Randall S. Becker" <rsbecker@nexbridge.com> > > 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. > > Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com> > --- > builtin/unpack-objects.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) The same comment as [1/4]. Perhaps your MAX_IO_SIZE should be tuned downwards, so that xwrite() works as it was designed to work. > diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c > index e0a701f2b3..6935c4574e 100644 > --- a/builtin/unpack-objects.c > +++ b/builtin/unpack-objects.c > @@ -680,7 +680,7 @@ int cmd_unpack_objects(int argc, const char **argv, const char *prefix UNUSED) > > /* Write the last part of the buffer to stdout */ > while (len) { > - int ret = xwrite(1, buffer + offset, len); > + int ret = write_in_full(1, buffer + offset, len); > if (ret <= 0) > break; > len -= ret;
On Monday, February 26, 2024 6:56 PM, Junio C Hamano wrote: >"Randall S. Becker" <the.n.e.key@gmail.com> writes: > >> From: "Randall S. Becker" <rsbecker@nexbridge.com> >> >> 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. >> >> Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com> >> --- >> builtin/unpack-objects.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) > >The same comment as [1/4]. Perhaps your MAX_IO_SIZE should be tuned downwards, so that xwrite() works as it was designed to >work. I am considering undoing this one, other than ensuring that the error code is checked and returned. The MAX_IO_SIZE is sufficient. I think the actual fail was in the original repack.c not this one. > >> diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c index >> e0a701f2b3..6935c4574e 100644 >> --- a/builtin/unpack-objects.c >> +++ b/builtin/unpack-objects.c >> @@ -680,7 +680,7 @@ int cmd_unpack_objects(int argc, const char >> **argv, const char *prefix UNUSED) >> >> /* Write the last part of the buffer to stdout */ >> while (len) { >> - int ret = xwrite(1, buffer + offset, len); >> + int ret = write_in_full(1, buffer + offset, len); >> if (ret <= 0) >> break; >> len -= ret;
diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c index e0a701f2b3..6935c4574e 100644 --- a/builtin/unpack-objects.c +++ b/builtin/unpack-objects.c @@ -680,7 +680,7 @@ int cmd_unpack_objects(int argc, const char **argv, const char *prefix UNUSED) /* Write the last part of the buffer to stdout */ while (len) { - int ret = xwrite(1, buffer + offset, len); + int ret = write_in_full(1, buffer + offset, len); if (ret <= 0) break; len -= ret;