summaryrefslogtreecommitdiffstats
path: root/sys-utils/dmesg.c
diff options
context:
space:
mode:
authorKarel Zak2011-07-18 11:28:15 +0200
committerKarel Zak2011-07-18 11:28:15 +0200
commit250001801107c4647c92f15210ba88a9f0fc272d (patch)
treeb2c0e749d1f169e7c45e66f76f70b0753e4ba9b5 /sys-utils/dmesg.c
parentlscpu: add support for books (diff)
downloadkernel-qcow2-util-linux-250001801107c4647c92f15210ba88a9f0fc272d.tar.gz
kernel-qcow2-util-linux-250001801107c4647c92f15210ba88a9f0fc272d.tar.xz
kernel-qcow2-util-linux-250001801107c4647c92f15210ba88a9f0fc272d.zip
dmesg: add -u and -k options
-u : print kernel messages -k : print userspace message The options could be mixed together or with --facility option too. Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'sys-utils/dmesg.c')
-rw-r--r--sys-utils/dmesg.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c
index 863b48aac..dc074b37d 100644
--- a/sys-utils/dmesg.c
+++ b/sys-utils/dmesg.c
@@ -115,10 +115,12 @@ static void __attribute__((__noreturn__)) usage(FILE *out)
" -e, --console-on enable printing messages to console\n"
" -f, --facility=LIST restrict output to defined facilities\n"
" -h, --help display this help and exit\n"
+ " -k, --kernel display kernel messages\n"
" -l, --level=LIST restrict output to defined levels\n"
" -n, --console-level=LEVEL set level of messages printed to console\n"
" -r, --raw print the raw message buffer\n"
" -s, --buffer-size=SIZE buffer size to query the kernel ring buffer\n"
+ " -u, --userspace display userspace messages\n"
" -V, --version output version information and exit\n"
" -x, --decode decode facility and level to readable string\n\n"));
@@ -478,9 +480,11 @@ int main(int argc, char *argv[])
{ "decode", no_argument, NULL, 'x' },
{ "facility", required_argument, NULL, 'f' },
{ "help", no_argument, NULL, 'h' },
+ { "kernel", no_argument, NULL, 'k' },
{ "level", required_argument, NULL, 'l' },
{ "raw", no_argument, NULL, 'r' },
{ "read-clear", no_argument, NULL, 'c' },
+ { "userspace", no_argument, NULL, 'u' },
{ "version", no_argument, NULL, 'V' },
{ NULL, 0, NULL, 0 }
};
@@ -489,7 +493,7 @@ int main(int argc, char *argv[])
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
- while ((c = getopt_long(argc, argv, "Ccdef:hl:n:rs:Vx", longopts, NULL)) != -1) {
+ while ((c = getopt_long(argc, argv, "Ccdef:hkl:n:rs:uVx", longopts, NULL)) != -1) {
if (cmd != -1 && strchr("Ccnde", c))
errx(EXIT_FAILURE, "%s %s",
@@ -516,6 +520,10 @@ int main(int argc, char *argv[])
case 'h':
usage(stdout);
break;
+ case 'k':
+ flags |= DMESG_FL_FACILITY;
+ setbit(facilities, FAC_BASE(LOG_KERN));
+ break;
case 'l':
flags |= DMESG_FL_LEVEL;
list_to_bitarray(optarg, parse_level, levels);
@@ -533,6 +541,11 @@ int main(int argc, char *argv[])
if (bufsize < 4096)
bufsize = 4096;
break;
+ case 'u':
+ flags |= DMESG_FL_FACILITY;
+ for (n = 1; n < ARRAY_SIZE(facility_names); n++)
+ setbit(facilities, n);
+ break;
case 'V':
printf(_("%s from %s\n"), program_invocation_short_name,
PACKAGE_STRING);
@@ -547,6 +560,7 @@ int main(int argc, char *argv[])
}
argc -= optind;
argv += optind;
+ n = 0;
if (argc > 1)
usage(stderr);