On Tue, 10 Mar 2009, Johannes Sixt wrote: > From: Johannes Sixt <j6t@xxxxxxxx> > > 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@xxxxxxxx> Acked-by: Nicolas Pitre <nico@xxxxxxx> > --- > 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@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html