[git commit master 1/1] dmesg: more correct skipping of <N>; use faster putchar for most output

Denys Vlasenko vda.linux at googlemail.com
Tue Oct 19 21:08:33 UTC 2010


commit: http://git.busybox.net/busybox/commit/?id=f04ca74ab5eb6ee57a573c6e1ab3e84d3f0a0af8
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
dmesg_main                                           246     291     +45

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 util-linux/dmesg.c |   19 ++++++++++++-------
 1 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/util-linux/dmesg.c b/util-linux/dmesg.c
index 06a03d3..6e43a22 100644
--- a/util-linux/dmesg.c
+++ b/util-linux/dmesg.c
@@ -45,20 +45,25 @@ int dmesg_main(int argc UNUSED_PARAM, char **argv)
 	if (len == 0)
 		return EXIT_SUCCESS;
 
-	/* Skip <#> at the start of lines, and make sure we end with a newline */
 
 	if (ENABLE_FEATURE_DMESG_PRETTY) {
 		int last = '\n';
 		int in = 0;
 
-		do {
-			if (last == '\n' && buf[in] == '<')
+		/* Skip <#> at the start of lines */
+		while (1) {
+			if (last == '\n' && buf[in] == '<') {
 				in += 3;
-			else {
-				last = buf[in++];
-				bb_putchar(last);
+				if (in >= len)
+					break;
 			}
-		} while (in < len);
+			last = buf[in];
+			putchar(last);
+			in++;
+			if (in >= len)
+				break;
+		}
+		/* Make sure we end with a newline */
 		if (last != '\n')
 			bb_putchar('\n');
 	} else {
-- 
1.7.1



More information about the busybox-cvs mailing list