Skip to content

Commit

Permalink
cope with multiple line breaks within sideband progress messages
Browse files Browse the repository at this point in the history
A single sideband packet may sometimes contain multiple lines of progress
messages, but we prepend "remote: " only to the whole buffer which creates
a messed up display in that case.  Make sure that the "remote: " prefix
is applied to every remote lines.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
  • Loading branch information
Nicolas Pitre authored and Shawn O. Pearce committed Oct 17, 2007
1 parent 42e18fb commit ed1902e
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions sideband.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ int recv_sideband(const char *me, int in_stream, int out, int err)
strcpy(buf, "remote:");
while (1) {
int band, len;
len = packet_read_line(in_stream, buf+7, LARGE_PACKET_MAX);
len = packet_read_line(in_stream, buf+7, LARGE_PACKET_MAX);
if (len == 0)
break;
if (len < 1) {
Expand All @@ -35,7 +35,22 @@ int recv_sideband(const char *me, int in_stream, int out, int err)
return SIDEBAND_REMOTE_ERROR;
case 2:
buf[7] = ' ';
safe_write(err, buf, 8+len);
len += 8;
while (1) {
int brk = 8;
while (brk < len) {
brk++;
if (buf[brk-1] == '\n' ||
buf[brk-1] == '\r')
break;
}
safe_write(err, buf, brk);
if (brk < len) {
memmove(buf + 8, buf + brk, len - brk);
len = len - brk + 8;
} else
break;
}
continue;
case 1:
safe_write(out, buf+8, len);
Expand Down

0 comments on commit ed1902e

Please sign in to comment.