[klibc] [PATCH] Fixes bug which strips every other digit in klibc-utils dmesg output
Anthony Fok
anthony.fok at thizgroup.com
Tue May 27 14:00:23 PDT 2008
There is a bug in the way which klibc/usr/utils/dmesg.c tries to strip
the initial <[0-7]> from kernel messages. The bug causes every other
numerical digit to be stripped from the output. Fixed.
A bug report with lots of details has been filed for Debian and Ubuntu:
* http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=483186
* https://bugs.launchpad.net/ubuntu/+source/klibc/+bug/235282
Signed-off-by: Anthony Fok <anthony.fok at thizgroup.com>
---
diff -Nur -x '*.orig' -x '*~' klibc-1.5.9/usr/utils/dmesg.c
klibc-1.5.9.new/usr/utils/dmesg.c
--- klibc-1.5.9/usr/utils/dmesg.c 2008-03-29 04:25:36.000000000 +0800
+++ klibc-1.5.9.new/usr/utils/dmesg.c 2008-05-27 07:07:36.000000000 +0800
@@ -50,20 +50,14 @@
exit(1);
}
- while (buf[i] && i < len)
- switch (buf[i]) {
- case '<':
- if (i == 0 || buf[i-1] == '\n')
- i++;
- case '0' ... '9':
- if (i > 0 && buf[i-1] == '<')
- i++;
- case '>':
- if (i > 0 && isdigit(buf[i-1]))
- i++;
- default:
- putchar(buf[i++]);
- }
+ while (buf[i] && i < len) {
+ if (i == 0 || buf[i-1] == '\n')
+ if (buf[i] == '<')
+ if (isdigit(buf[++i]))
+ if (buf[++i] == '>')
+ i++;
+ putchar(buf[i++]);
+ }
if (buf[i-1] != '\n')
putchar('\n');
More information about the klibc
mailing list