Module Name: src Committed By: uwe Date: Thu Sep 12 18:43:02 UTC 2019
Modified Files: src/sys/ddb: db_output.c Log Message: db_putchar - check if we need to wrap at $maxwidth after whitespace. That fixes orphaned first character in something like: |Stopped in ... longsymbol+0xf00: | |i |nsn To generate a diff of this commit: cvs rdiff -u -r1.34 -r1.35 src/sys/ddb/db_output.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/ddb/db_output.c diff -u src/sys/ddb/db_output.c:1.34 src/sys/ddb/db_output.c:1.35 --- src/sys/ddb/db_output.c:1.34 Sun Sep 16 23:18:55 2018 +++ src/sys/ddb/db_output.c Thu Sep 12 18:43:02 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: db_output.c,v 1.34 2018/09/16 23:18:55 mrg Exp $ */ +/* $NetBSD: db_output.c,v 1.35 2019/09/12 18:43:02 uwe Exp $ */ /* * Mach Operating System @@ -35,7 +35,7 @@ #endif #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: db_output.c,v 1.34 2018/09/16 23:18:55 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: db_output.c,v 1.35 2019/09/12 18:43:02 uwe Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -103,6 +103,24 @@ db_force_whitespace(void) db_last_non_space = db_output_position; } + +/* + * End the current line if we it exceeds $maxwidth + */ +static void +db_check_wrap(void) +{ + + if (db_max_width >= DB_MIN_MAX_WIDTH + && db_output_position >= db_max_width) { + cnputc('\n'); + db_output_position = 0; + db_last_non_space = 0; + db_output_line++; + } +} + + static void db_more(void) { @@ -148,16 +166,10 @@ db_putchar(int c) * Use tabs if possible. */ db_force_whitespace(); + db_check_wrap(); cnputc(c); db_output_position++; - if (db_max_width >= DB_MIN_MAX_WIDTH - && db_output_position >= db_max_width) { - /* auto new line */ - cnputc('\n'); - db_output_position = 0; - db_last_non_space = 0; - db_output_line++; - } + db_check_wrap(); db_last_non_space = db_output_position; } else if (c == '\n') { /* Return */