X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;ds=sidebyside;f=util-linux%2Fdmesg.c;h=e543446c11c87e02c6d92c28518eeda796c1130c;hb=066e76befe5d39fc3451846af94cbba96747186c;hp=412bf024bbd12f151870522ca6d3984f95e1545e;hpb=5bc8c005a8e15c43285bc595a8d404de67a482ac;p=oweals%2Fbusybox.git diff --git a/util-linux/dmesg.c b/util-linux/dmesg.c index 412bf024b..e543446c1 100644 --- a/util-linux/dmesg.c +++ b/util-linux/dmesg.c @@ -13,10 +13,10 @@ //usage: "[-c] [-n LEVEL] [-s SIZE]" //usage:#define dmesg_full_usage "\n\n" //usage: "Print or control the kernel ring buffer\n" -//usage: "\nOptions:" //usage: "\n -c Clear ring buffer after printing" //usage: "\n -n LEVEL Set console logging level" //usage: "\n -s SIZE Buffer size" +//usage: "\n -r Print raw message buffer" #include #include "libbb.h" @@ -30,11 +30,12 @@ int dmesg_main(int argc UNUSED_PARAM, char **argv) enum { OPT_c = 1 << 0, OPT_s = 1 << 1, - OPT_n = 1 << 2 + OPT_n = 1 << 2, + OPT_r = 1 << 3 }; opt_complementary = "s+:n+"; /* numeric */ - opts = getopt32(argv, "cs:n:", &len, &level); + opts = getopt32(argv, "cs:n:r", &len, &level); if (opts & OPT_n) { if (klogctl(8, NULL, (long) level)) bb_perror_msg_and_die("klogctl"); @@ -56,20 +57,19 @@ int dmesg_main(int argc UNUSED_PARAM, char **argv) return EXIT_SUCCESS; - if (ENABLE_FEATURE_DMESG_PRETTY) { + if (ENABLE_FEATURE_DMESG_PRETTY && !(opts & OPT_r)) { int last = '\n'; int in = 0; - /* Skip <#> at the start of lines */ + /* Skip <[0-9]+> at the start of lines */ while (1) { if (last == '\n' && buf[in] == '<') { - in += 3; - if (in >= len) - break; + while (buf[in++] != '>' && in < len) + ; + } else { + last = buf[in++]; + putchar(last); } - last = buf[in]; - putchar(last); - in++; if (in >= len) break; }