On 2017-03-24 16:27, Ben Peart wrote: > Add packet_writel() which writes multiple lines in a single call and > then calls packet_flush_gently(). Add packet_read_line_gently() to > enable reading a line without dying on EOF. > > Signed-off-by: Ben Peart <benpeart@xxxxxxxxxxxxx> > --- > pkt-line.c | 31 +++++++++++++++++++++++++++++++ > pkt-line.h | 11 +++++++++++ > 2 files changed, 42 insertions(+) > > diff --git a/pkt-line.c b/pkt-line.c > index d4b6bfe076..2788aa1af6 100644 > --- a/pkt-line.c > +++ b/pkt-line.c > @@ -171,6 +171,25 @@ int packet_write_fmt_gently(int fd, const char *fmt, ...) > return status; > } > > +int packet_writel(int fd, const char *line, ...) The name packet_writel is hard to distinguish from packet_write. Would packet_write_lines make more sense ? > +{ > + va_list args; > + int err; > + va_start(args, line); > + for (;;) { > + if (!line) > + break; > + if (strlen(line) > LARGE_PACKET_DATA_MAX) > + return -1; > + err = packet_write_fmt_gently(fd, "%s\n", line); > + if (err) > + return err; > + line = va_arg(args, const char*); > + } > + va_end(args); > + return packet_flush_gently(fd); > +} > + I don't think that this va_start() is needed, even if it works. int packet_write_line(int fd, const char *lines[]) | const char *line = *lines; int err; while (line) { if (strlen(line) > LARGE_PACKET_DATA_MAX) return -1; err = packet_write_fmt_gently(fd, "%s\n", line); if (err) return err; lines++; line = *lines; } return packet_flush_gently(fd); ]