提交 4bcd37d3 编写于 作者: B Brandon Williams 提交者: Junio C Hamano

test-pkt-line: add unpack-sideband subcommand

Add an 'unpack-sideband' subcommand to the test-pkt-line helper to
enable unpacking packet line data sent multiplexed using a sideband.
Signed-off-by: NBrandon Williams <bmwill@google.com>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 53f9a3e1
#include "cache.h"
#include "pkt-line.h"
static void pack_line(const char *line)
......@@ -48,6 +49,36 @@ static void unpack(void)
}
}
static void unpack_sideband(void)
{
struct packet_reader reader;
packet_reader_init(&reader, 0, NULL, 0,
PACKET_READ_GENTLE_ON_EOF |
PACKET_READ_CHOMP_NEWLINE);
while (packet_reader_read(&reader) != PACKET_READ_EOF) {
int band;
int fd;
switch (reader.status) {
case PACKET_READ_EOF:
break;
case PACKET_READ_NORMAL:
band = reader.line[0] & 0xff;
if (band < 1 || band > 2)
die("unexpected side band %d", band);
fd = band;
write_or_die(fd, reader.line + 1, reader.pktlen - 1);
break;
case PACKET_READ_FLUSH:
return;
case PACKET_READ_DELIM:
break;
}
}
}
int cmd_main(int argc, const char **argv)
{
if (argc < 2)
......@@ -57,6 +88,8 @@ int cmd_main(int argc, const char **argv)
pack(argc - 2, argv + 2);
else if (!strcmp(argv[1], "unpack"))
unpack();
else if (!strcmp(argv[1], "unpack-sideband"))
unpack_sideband();
else
die("invalid argument '%s'", argv[1]);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册