cope with multiple line breaks within sideband progress messages
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>
This commit is contained in:
parent
42e18fbf5f
commit
ed1902ef5c
17
sideband.c
17
sideband.c
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user