klogd: handle multi-char log levels
authorPeter Korsgaard <jacmet@sunsite.dk>
Sat, 5 Jan 2013 23:07:18 +0000 (00:07 +0100)
committerMike Frysinger <vapier@gentoo.org>
Sun, 6 Jan 2013 02:03:19 +0000 (21:03 -0500)
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 use strtoul to parse it.

function                                             old     new   delta
klogd_main                                           490     525     +35
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/0 up/down: 35/0)               Total: 35 bytes

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
sysklogd/klogd.c

index f59a155b40e0c919c0a3403a267eea9d532dd07d..432ded1530be3054bf1f3ee9130d025a803833ee 100644 (file)
@@ -240,11 +240,8 @@ int klogd_main(int argc UNUSED_PARAM, char **argv)
                        priority = LOG_INFO;
                        if (*start == '<') {
                                start++;
-                               if (*start) {
-                                       /* kernel never generates multi-digit prios */
-                                       priority = (*start - '0');
-                                       start++;
-                               }
+                               if (*start)
+                                       priority = strtoul(start, &start, 10);
                                if (*start == '>')
                                        start++;
                        }