Re: [PATCH/RFC] recv_sideband: Band #2 always goes to stderr
- From
Nicolas Pitre <nico@cam.org>
- Date
- Mar 10, 2009, 17:37 UTC
- Message-ID
- <alpine.LFD.2.00.0903101335470.30483@xanadu.home>
- In-Reply-To
- <49B61703.8030602@viscovery.net>
On Tue, 10 Mar 2009, Johannes Sixt wrote:
Show 10 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.
You appear to modify band #3 as well. Better mention it in the commit log.
> Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Acked-by: Nicolas Pitre <nico@cam.org>
Show 129 quoted lines
> ---
> Johannes Sixt schrieb:
> > Johannes Schindelin schrieb:
> >> To make use of it during a fetch, write() needs to be overridden, too.
> >
> > No, that's not necessary with the patch that I'm about to send in a
> > moment. To replace write() for ANSI emulation really goes too far.
>
> Here it is. The patch is still RFC because I didn't have a chance, yet,
> to test it in practice. It passes the test suite.
>
> -- Hannes
>
> builtin-archive.c | 2 +-
> builtin-fetch-pack.c | 2 +-
> sideband.c | 20 +++++++++-----------
> sideband.h | 2 +-
> 4 files changed, 12 insertions(+), 14 deletions(-)
>
> diff --git a/builtin-archive.c b/builtin-archive.c
> index 60adef9..ab50ceb 100644
> --- a/builtin-archive.c
> +++ b/builtin-archive.c
> @@ -52,7 +52,7 @@ static int run_remote_archiver(int argc, const char **argv,
> die("git archive: expected a flush");
>
> /* Now, start reading from fd[0] and spit it out to stdout */
> - rv = recv_sideband("archive", fd[0], 1, 2);
> + rv = recv_sideband("archive", fd[0], 1);
> close(fd[0]);
> close(fd[1]);
> rv |= finish_connect(conn);
> diff --git a/builtin-fetch-pack.c b/builtin-fetch-pack.c
> index c2e5adc..2b36099 100644
> --- a/builtin-fetch-pack.c
> +++ b/builtin-fetch-pack.c
> @@ -482,7 +482,7 @@ static int sideband_demux(int fd, void *data)
> {
> int *xd = data;
>
> - return recv_sideband("fetch-pack", xd[0], fd, 2);
> + return recv_sideband("fetch-pack", xd[0], fd);
> }
>
> static int get_pack(int xd[2], char **pack_lockfile)
> diff --git a/sideband.c b/sideband.c
> index cca3360..a706ac8 100644
> --- a/sideband.c
> +++ b/sideband.c
> @@ -19,7 +19,7 @@
>
> #define FIX_SIZE 10 /* large enough for any of the above */
>
> -int recv_sideband(const char *me, int in_stream, int out, int err)
> +int recv_sideband(const char *me, int in_stream, int out)
> {
> unsigned pf = strlen(PREFIX);
> unsigned sf;
> @@ -41,8 +41,7 @@ int recv_sideband(const char *me, int in_stream, int out, int err)
> if (len == 0)
> break;
> if (len < 1) {
> - len = sprintf(buf, "%s: protocol error: no band designator\n", me);
> - safe_write(err, buf, len);
> + fprintf(stderr, "%s: protocol error: no band designator\n", me);
> return SIDEBAND_PROTOCOL_ERROR;
> }
> band = buf[pf] & 0xff;
> @@ -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);
> return SIDEBAND_REMOTE_ERROR;
> case 2:
> buf[pf] = ' ';
> @@ -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);
> len -= l;
> }
>
> @@ -112,10 +112,8 @@ int recv_sideband(const char *me, int in_stream, int out, int err)
> safe_write(out, buf + pf+1, len);
> continue;
> default:
> - len = sprintf(buf,
> - "%s: protocol error: bad band #%d\n",
> - me, band);
> - safe_write(err, buf, len);
> + fprintf(stderr, "%s: protocol error: bad band #%d\n",
> + me, band);
> return SIDEBAND_PROTOCOL_ERROR;
> }
> }
> diff --git a/sideband.h b/sideband.h
> index a84b691..d72db35 100644
> --- a/sideband.h
> +++ b/sideband.h
> @@ -7,7 +7,7 @@
> #define DEFAULT_PACKET_MAX 1000
> #define LARGE_PACKET_MAX 65520
>
> -int recv_sideband(const char *me, int in_stream, int out, int err);
> +int recv_sideband(const char *me, int in_stream, int out);
> ssize_t send_sideband(int fd, int band, const char *data, ssize_t sz, int packet_max);
>
> #endif
> --
> 1.6.2.987.g90c1d
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>