aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Korsgaard <jacmet@sunsite.dk>2013-01-06 00:07:17 +0100
committerMike Frysinger <vapier@gentoo.org>2013-01-05 21:02:14 -0500
commit3917fa32dce8c887d0a87d0d2f4490f1b89b51d0 (patch)
tree37069276b1d94e05bf9c032985b7b214f4ae9eb5
parentfb499c57525377ca579e310d2d29c867535dd2f6 (diff)
downloadbusybox-w32-3917fa32dce8c887d0a87d0d2f4490f1b89b51d0.tar.gz
busybox-w32-3917fa32dce8c887d0a87d0d2f4490f1b89b51d0.tar.bz2
busybox-w32-3917fa32dce8c887d0a87d0d2f4490f1b89b51d0.zip
dmesg: handle multi-char log levels
Since Linux 3.5 (7ff9554bb5: printk: convert byte-buffer to variable-length record buffer), klog buffer can now contain log lines with multi-char loglevel indicators (<[0-9]+>) - So we can no longer just skip 3 bytes. Instead skip past the terminating '>' like util-linux does. function old new delta dmesg_main 266 280 +13 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 13/0) Total: 13 bytes Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-rw-r--r--util-linux/dmesg.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/util-linux/dmesg.c b/util-linux/dmesg.c
index 6505da54b..81ba1c9d1 100644
--- a/util-linux/dmesg.c
+++ b/util-linux/dmesg.c
@@ -59,16 +59,15 @@ int dmesg_main(int argc UNUSED_PARAM, char **argv)
59 int last = '\n'; 59 int last = '\n';
60 int in = 0; 60 int in = 0;
61 61
62 /* Skip <#> at the start of lines */ 62 /* Skip <[0-9]+> at the start of lines */
63 while (1) { 63 while (1) {
64 if (last == '\n' && buf[in] == '<') { 64 if (last == '\n' && buf[in] == '<') {
65 in += 3; 65 while (buf[in++] != '>' && in < len)
66 if (in >= len) 66 ;
67 break; 67 } else {
68 last = buf[in++];
69 putchar(last);
68 } 70 }
69 last = buf[in];
70 putchar(last);
71 in++;
72 if (in >= len) 71 if (in >= len)
73 break; 72 break;
74 } 73 }