Skip to content

Commit

Permalink
recv_sideband: Bands #2 and #3 always go to stderr
Browse files Browse the repository at this point in the history
This removes the last parameter of recv_sideband, by which the callers
told which channel bands #2 and #3 should be written to.

Sayeth Shawn Pearce:

   The definition of the streams in the current sideband protocol
   are rather well defined for the one protocol that uses it,
   fetch-pack/receive-pack:

     stream #1:  pack data
     stream #2:  stderr messages, progress, meant for tty
     stream #3:  abort message, remote is dead, goodbye!

Since both callers of the function passed 2 for the parameter, we hereby
remove it and send bands #2 and #3 to stderr explicitly using fprintf.

This has the nice side-effect that these two streams pass through our
ANSI emulation layer on Windows.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Acked-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
j6t authored and gitster committed Mar 11, 2009
1 parent c4994ce commit 34df8ab
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 14 deletions.
2 changes: 1 addition & 1 deletion builtin-archive.c
Expand Up @@ -52,7 +52,7 @@ static int run_remote_archiver(int argc, const char **argv,
die("git archive: expected a flush"); die("git archive: expected a flush");


/* Now, start reading from fd[0] and spit it out to stdout */ /* 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[0]);
close(fd[1]); close(fd[1]);
rv |= finish_connect(conn); rv |= finish_connect(conn);
Expand Down
2 changes: 1 addition & 1 deletion builtin-fetch-pack.c
Expand Up @@ -482,7 +482,7 @@ static int sideband_demux(int fd, void *data)
{ {
int *xd = 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) static int get_pack(int xd[2], char **pack_lockfile)
Expand Down
19 changes: 8 additions & 11 deletions sideband.c
Expand Up @@ -19,7 +19,7 @@


#define FIX_SIZE 10 /* large enough for any of the above */ #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 pf = strlen(PREFIX);
unsigned sf; unsigned sf;
Expand All @@ -41,17 +41,16 @@ int recv_sideband(const char *me, int in_stream, int out, int err)
if (len == 0) if (len == 0)
break; break;
if (len < 1) { if (len < 1) {
len = sprintf(buf, "%s: protocol error: no band designator\n", me); fprintf(stderr, "%s: protocol error: no band designator\n", me);
safe_write(err, buf, len);
return SIDEBAND_PROTOCOL_ERROR; return SIDEBAND_PROTOCOL_ERROR;
} }
band = buf[pf] & 0xff; band = buf[pf] & 0xff;
len--; len--;
switch (band) { switch (band) {
case 3: case 3:
buf[pf] = ' '; buf[pf] = ' ';
buf[pf+1+len] = '\n'; buf[pf+1+len] = '\0';
safe_write(err, buf, pf+1+len+1); fprintf(stderr, "%s\n", buf);
return SIDEBAND_REMOTE_ERROR; return SIDEBAND_REMOTE_ERROR;
case 2: case 2:
buf[pf] = ' '; buf[pf] = ' ';
Expand Down Expand Up @@ -95,12 +94,12 @@ int recv_sideband(const char *me, int in_stream, int out, int err)
memcpy(save, b + brk, sf); memcpy(save, b + brk, sf);
b[brk + sf - 1] = b[brk - 1]; b[brk + sf - 1] = b[brk - 1];
memcpy(b + brk - 1, suffix, sf); memcpy(b + brk - 1, suffix, sf);
safe_write(err, b, brk + sf); fprintf(stderr, "%.*s", brk + sf, b);
memcpy(b + brk, save, sf); memcpy(b + brk, save, sf);
len -= brk; len -= brk;
} else { } else {
int l = brk ? brk : len; int l = brk ? brk : len;
safe_write(err, b, l); fprintf(stderr, "%.*s", l, b);
len -= l; len -= l;
} }


Expand All @@ -112,10 +111,8 @@ int recv_sideband(const char *me, int in_stream, int out, int err)
safe_write(out, buf + pf+1, len); safe_write(out, buf + pf+1, len);
continue; continue;
default: default:
len = sprintf(buf, fprintf(stderr, "%s: protocol error: bad band #%d\n",
"%s: protocol error: bad band #%d\n", me, band);
me, band);
safe_write(err, buf, len);
return SIDEBAND_PROTOCOL_ERROR; return SIDEBAND_PROTOCOL_ERROR;
} }
} }
Expand Down
2 changes: 1 addition & 1 deletion sideband.h
Expand Up @@ -7,7 +7,7 @@
#define DEFAULT_PACKET_MAX 1000 #define DEFAULT_PACKET_MAX 1000
#define LARGE_PACKET_MAX 65520 #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); ssize_t send_sideband(int fd, int band, const char *data, ssize_t sz, int packet_max);


#endif #endif

0 comments on commit 34df8ab

Please sign in to comment.