> ---
> 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] = '__PLACEHOLDER__2_';
> + 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
>