From: Johannes Schindelin <johannes.schindelin@xxxxxx> This function currently has only one caller: `apply_multi_file_filter()` in `convert.c`. That caller wants a flush packet to be written after writing the payload. However, we are about to introduce a user that wants to write many packets before a final flush packet, so let's extend this function to prepare for that scenario. Signed-off-by: Jeff Hostetler <jeffhost@xxxxxxxxxxxxx> Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> --- convert.c | 2 +- pkt-line.c | 9 ++++++--- pkt-line.h | 4 +++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/convert.c b/convert.c index ee360c2f07c..3f396a9b288 100644 --- a/convert.c +++ b/convert.c @@ -886,7 +886,7 @@ static int apply_multi_file_filter(const char *path, const char *src, size_t len if (fd >= 0) err = write_packetized_from_fd(fd, process->in); else - err = write_packetized_from_buf(src, len, process->in); + err = write_packetized_from_buf(src, len, process->in, 1); if (err) goto done; diff --git a/pkt-line.c b/pkt-line.c index 5d86354cbeb..d91a1deda95 100644 --- a/pkt-line.c +++ b/pkt-line.c @@ -275,14 +275,17 @@ int write_packetized_from_fd(int fd_in, int fd_out) return err; } -int write_packetized_from_buf(const char *src_in, size_t len, int fd_out) +int write_packetized_from_buf(const char *src_in, size_t len, int fd_out, + int flush_at_end) { static struct packet_scratch_space scratch; - return write_packetized_from_buf2(src_in, len, fd_out, &scratch); + return write_packetized_from_buf2(src_in, len, fd_out, + flush_at_end, &scratch); } int write_packetized_from_buf2(const char *src_in, size_t len, int fd_out, + int flush_at_end, struct packet_scratch_space *scratch) { int err = 0; @@ -299,7 +302,7 @@ int write_packetized_from_buf2(const char *src_in, size_t len, int fd_out, err = packet_write_gently(fd_out, src_in + bytes_written, bytes_to_write, scratch); bytes_written += bytes_to_write; } - if (!err) + if (!err && flush_at_end) err = packet_flush_gently(fd_out); return err; } diff --git a/pkt-line.h b/pkt-line.h index f1d5625e91f..ccf27549227 100644 --- a/pkt-line.h +++ b/pkt-line.h @@ -40,8 +40,10 @@ void packet_buf_write_len(struct strbuf *buf, const char *data, size_t len); int packet_flush_gently(int fd); int packet_write_fmt_gently(int fd, const char *fmt, ...) __attribute__((format (printf, 2, 3))); int write_packetized_from_fd(int fd_in, int fd_out); -int write_packetized_from_buf(const char *src_in, size_t len, int fd_out); +int write_packetized_from_buf(const char *src_in, size_t len, int fd_out, + int flush_at_end); int write_packetized_from_buf2(const char *src_in, size_t len, int fd_out, + int flush_at_end, struct packet_scratch_space *scratch); /* -- gitgitgadget