translate borg output line endings

This commit is contained in:
Gregor Kleen 2023-05-29 17:21:30 +02:00
parent 95973ae2c8
commit 057004d7da

View File

@ -488,6 +488,7 @@ def main():
pipe_buffer = b"" pipe_buffer = b""
stdout_line_buffer = bytearray(b"") stdout_line_buffer = bytearray(b"")
stderr_line_buffer = bytearray(b"") stderr_line_buffer = bytearray(b"")
newline_trans = bytearray.maketrans(b"\r", b"\n")
while pollc > 0 and len(events) > 0: while pollc > 0 and len(events) > 0:
for rfd, event in events: for rfd, event in events:
logger.debug("rfd=%d, event=%x", rfd, event) logger.debug("rfd=%d, event=%x", rfd, event)
@ -512,7 +513,9 @@ def main():
logger.debug("Reading from stdout...") logger.debug("Reading from stdout...")
if chunk := proc.stdout.buffer.read(PIPE_BUF): if chunk := proc.stdout.buffer.read(PIPE_BUF):
logger.debug("Done, length %d", len(chunk)) logger.debug("Done, length %d", len(chunk))
stdout_line_buffer.extend(chunk) stdout_line_buffer.extend(
chunk.translate(newline_trans)
)
logger.debug( logger.debug(
"Buffer at length %d", len(stdout_line_buffer) "Buffer at length %d", len(stdout_line_buffer)
) )
@ -520,7 +523,7 @@ def main():
line, sep, rest = stdout_line_buffer.partition( line, sep, rest = stdout_line_buffer.partition(
b"\n" b"\n"
) )
logger.debug("Split: %r, %r, %r", line, sep, rest) # logger.debug("Split: %r, %r, %r", line, sep, rest)
if sep: if sep:
stdout_logger.info(line) stdout_logger.info(line)
stdout_line_buffer = rest stdout_line_buffer = rest
@ -530,7 +533,9 @@ def main():
logger.debug("Reading from stderr...") logger.debug("Reading from stderr...")
if chunk := proc.stderr.buffer.read(PIPE_BUF): if chunk := proc.stderr.buffer.read(PIPE_BUF):
logger.debug("Done, length %d", len(chunk)) logger.debug("Done, length %d", len(chunk))
stderr_line_buffer.extend(chunk) stderr_line_buffer.extend(
chunk.translate(newline_trans)
)
logger.debug( logger.debug(
"Buffer at length %d", len(stderr_line_buffer) "Buffer at length %d", len(stderr_line_buffer)
) )
@ -538,7 +543,7 @@ def main():
line, sep, rest = stderr_line_buffer.partition( line, sep, rest = stderr_line_buffer.partition(
b"\n" b"\n"
) )
logger.debug("Split: %r, %r, %r", line, sep, rest) # logger.debug("Split: %r, %r, %r", line, sep, rest)
if sep: if sep:
stderr_logger.info(line) stderr_logger.info(line)
stderr_line_buffer = rest stderr_line_buffer = rest