reftable/blocksource: adjust `read_block()` to return `ssize_t`
The `block_source_read_block()` function and its implementations return
an integer as a result that reflects either the number of bytes read, or
an error. As such its return type, a signed integer, isn't wrong, but it
doesn't give the reader a good hint what it actually returns.
Refactor the function to return an `ssize_t` instead, which is typical
for functions similar to read(3p) and should thus give readers a better
signal what they can expect as a result.
Adjust callers to better handle the returned value to avoid warnings
with -Wsign-compare. One of these callers is `reader_get_block()`, whose
return value is only ever used by its callers to figure out whether or
not the read was successful. So instead of bubbling up the `ssize_t`
there, too, we adapt it to only indicate success or errors.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Patrick Steinhardt committedJan 20, 2025 at 17:17 UTC7c4c1cbc0b94665d6a94ac7df385459346af5265
index f06ad52e0a..6b326aa5ea 100644--- a/reftable/reftable-blocksource.h+++ b/reftable/reftable-blocksource.h@@ -31,10 +31,13 @@ struct reftable_block_source_vtable { /* returns the size of a block source */ uint64_t (*size)(void *source);- /* reads a segment from the block source. It is an error to read- beyond the end of the block */- int (*read_block)(void *source, struct reftable_block *dest,- uint64_t off, uint32_t size);+ /*+ * Reads a segment from the block source. It is an error to read beyond+ * the end of the block.+ */+ ssize_t (*read_block)(void *source, struct reftable_block *dest,+ uint64_t off, uint32_t size);+ /* mark the block as read; may return the data back to malloc */ void (*return_block)(void *source, struct reftable_block *blockp);