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 <benpe...@microsoft.com>
> ---
>  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);
]


Reply via email to