aboutsummaryrefslogtreecommitdiff
path: root/streaming.h
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2025-11-23 19:59:38 +0100
committerJunio C Hamano <gitster@pobox.com>2025-11-23 12:56:45 -0800
commitc26da3446e98ad4aa98ec9154c70c6fd35cb9ad6 (patch)
tree0d49eeae98907ce7139f3c47ae8f27e02570cb6d /streaming.h
parent4c89d31494bff4bde6079a0e0821f1437e37d07b (diff)
downloadgit-c26da3446e98ad4aa98ec9154c70c6fd35cb9ad6.tar.xz
streaming: get rid of `the_repository`
Subsequent commits will move the backend-specific logic of object streaming into their respective subsystems. These subsystems have gotten rid of `the_repository` already, but we still use it in two locations in the streaming subsystem. Prepare for the move by fixing those two cases. Converting the logic in `open_istream_pack_non_delta()` is trivial as we already got the object database as input. But for `stream_blob_to_fd()` we have to add a new parameter to make it accessible. So, as we already have to adjust all callers anyway, rename the function to `odb_stream_blob_to_fd()` to indicate it's part of the object subsystem. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'streaming.h')
-rw-r--r--streaming.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/streaming.h b/streaming.h
index f5ff5d7ac9..148f6b3069 100644
--- a/streaming.h
+++ b/streaming.h
@@ -6,6 +6,7 @@
#include "object.h"
+struct object_database;
/* opaque */
struct odb_read_stream;
struct stream_filter;
@@ -16,6 +17,21 @@ struct odb_read_stream *open_istream(struct repository *, const struct object_id
int close_istream(struct odb_read_stream *);
ssize_t read_istream(struct odb_read_stream *, void *, size_t);
-int stream_blob_to_fd(int fd, const struct object_id *, struct stream_filter *, int can_seek);
+/*
+ * Look up the object by its ID and write the full contents to the file
+ * descriptor. The object must be a blob, or the function will fail. When
+ * provided, the filter is used to transform the blob contents.
+ *
+ * `can_seek` should be set to 1 in case the given file descriptor can be
+ * seek(3p)'d on. This is used to support files with holes in case a
+ * significant portion of the blob contains NUL bytes.
+ *
+ * Returns a negative error code on failure, 0 on success.
+ */
+int odb_stream_blob_to_fd(struct object_database *odb,
+ int fd,
+ const struct object_id *oid,
+ struct stream_filter *filter,
+ int can_seek);
#endif /* STREAMING_H */