authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-05-23 11:10:41-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-05-27 20:56:48-07:00
loged36470af1c71a254bbe535bf70220aa27370f89
tree1b949c924d039b5263e55b754b6ffd83eed9768d
parent67e08e7b3cbed652953b21fb50ffff337318ae16

std.Progress: truncate trailing newline


1 files changed, 15 insertions(+), 19 deletions(-)

lib/std/Progress.zig+15-19
......@@ -367,12 +367,23 @@ fn clearTerminal() void {
367367 buf[i..][0..start_sync.len].* = start_sync.*;
368368 i += start_sync.len;
369369
370 i = computeClear(buf, i);
371
372 buf[i..][0..finish_sync.len].* = finish_sync.*;
373 i += finish_sync.len;
374
375 write(buf[0..i]);
376}
377
378fn computeClear(buf: []u8, start_i: usize) usize {
379 var i = start_i;
380
370381 const prev_nl_n = global_progress.newline_count;
371382 if (prev_nl_n > 0) {
372383 global_progress.newline_count = 0;
373384 buf[i] = '\r';
374385 i += 1;
375 for (0..prev_nl_n) |_| {
386 for (1..prev_nl_n) |_| {
376387 buf[i..][0..up_one_line.len].* = up_one_line.*;
377388 i += up_one_line.len;
378389 }
......@@ -381,10 +392,7 @@ fn clearTerminal() void {
381392 buf[i..][0..clear.len].* = clear.*;
382393 i += clear.len;
383394
384 buf[i..][0..finish_sync.len].* = finish_sync.*;
385 i += finish_sync.len;
386
387 write(buf[0..i]);
395 return i;
388396}
389397
390398const Children = struct {
......@@ -467,25 +475,13 @@ fn computeRedraw() []u8 {
467475 buf[i..][0..start_sync.len].* = start_sync.*;
468476 i += start_sync.len;
469477
470 const prev_nl_n = global_progress.newline_count;
471 if (prev_nl_n > 0) {
472 global_progress.newline_count = 0;
473 buf[i] = '\r';
474 i += 1;
475 for (0..prev_nl_n) |_| {
476 buf[i..][0..up_one_line.len].* = up_one_line.*;
477 i += up_one_line.len;
478 }
479 }
480
481 buf[i..][0..clear.len].* = clear.*;
482 i += clear.len;
478 i = computeClear(buf, i);
483479
484480 const root_node_index: Node.Index = @enumFromInt(0);
485481 i = computeNode(buf, i, serialized_node_storage, serialized_node_parents, children, root_node_index);
486482
487483 // Truncate trailing newline.
488 //if (buf[i - 1] == '\n') i -= 1;
484 if (buf[i - 1] == '\n') i -= 1;
489485
490486 buf[i..][0..finish_sync.len].* = finish_sync.*;
491487 i += finish_sync.len;