Re: [PATCH/RFC] recv_sideband: Band #2 always goes to stderr
Johannes Sixt <j.sixt@viscovery.net> wrote:
Show 12 quoted lines
> From: Johannes Sixt <j6t@kdbg.org>
>
> This removes the last parameter of recv_sideband, by which the callers
> told which channel band #2 data should be written to. Since both callers
> of the function passed 2 for the parameter, we hereby remove the
> parameter and send band #2 to stderr explicitly using fprintf.
>
> This has the nice side-effect that the band #2 data (most importantly
> progress reports during a fetch operation) passes through our ANSI
> emulation layer on Windows.
>
> Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Show 12 quoted lines
> diff --git a/sideband.c b/sideband.c
> index cca3360..a706ac8 100644
> --- a/sideband.c
> +++ b/sideband.c
> @@ -50,8 +49,8 @@ int recv_sideband(const char *me, int in_stream, int out, int err)
> switch (band) {
> case 3:
> buf[pf] = ' ';
> - buf[pf+1+len] = '\n';
> - safe_write(err, buf, pf+1+len+1);
> + buf[pf+1+len] = '\0';
> + fprintf(stderr, "%s\n", buf);Can't you instead do:
fprintf(stderr, "%.*s\n", buf, pf + len);
like you do...
Show 13 quoted lines
> @@ -95,12 +94,13 @@ int recv_sideband(const char *me, int in_stream, int out, int err)
> memcpy(save, b + brk, sf);
> b[brk + sf - 1] = b[brk - 1];
> memcpy(b + brk - 1, suffix, sf);
> - safe_write(err, b, brk + sf);
> + fprintf(stderr, "%.*s", brk + sf, b);
> memcpy(b + brk, save, sf);
> len -= brk;
> } else {
> int l = brk ? brk : len;
> - safe_write(err, b, l);
> + if (l > 0)
> + fprintf(stderr, "%.*s", l, b);--
Shawn.