summaryrefslogtreecommitdiffstats
path: root/sys-utils/dmesg.c
diff options
context:
space:
mode:
authorKarel Zak2011-07-01 14:33:27 +0200
committerKarel Zak2011-07-01 14:33:27 +0200
commit0419986053aefbe91afebbc66440b8d6c50290ea (patch)
treea24b5d5a45d2abaac2a5e1dff092389aa390533b /sys-utils/dmesg.c
parentdmesg: refactoring - cleanup main() code (diff)
downloadkernel-qcow2-util-linux-0419986053aefbe91afebbc66440b8d6c50290ea.tar.gz
kernel-qcow2-util-linux-0419986053aefbe91afebbc66440b8d6c50290ea.tar.xz
kernel-qcow2-util-linux-0419986053aefbe91afebbc66440b8d6c50290ea.zip
dmesg: add --clear (SYSLOG_ACTION_CLEAR)
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'sys-utils/dmesg.c')
-rw-r--r--sys-utils/dmesg.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c
index ac8da0c53..a53f49140 100644
--- a/sys-utils/dmesg.c
+++ b/sys-utils/dmesg.c
@@ -57,6 +57,7 @@ static void __attribute__((__noreturn__)) usage(FILE *out)
fprintf(out, _(
"\nOptions:\n"
+ " -C, --clear clear the kernel ring buffer\n"
" -c, --read-clear read and clear all messages\n"
" -r, --raw print the raw message buffer\n"
" -s, --buffer-size=SIZE buffer size to query the kernel ring buffer\n"
@@ -136,6 +137,7 @@ int main(int argc, char *argv[])
int flags = 0;
static const struct option longopts[] = {
+ { "clear", no_argument, NULL, 'C' },
{ "read-clear", no_argument, NULL, 'c' },
{ "raw", no_argument, NULL, 'r' },
{ "buffer-size", required_argument, NULL, 's' },
@@ -149,8 +151,11 @@ int main(int argc, char *argv[])
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
- while ((c = getopt_long(argc, argv, "chrn:s:V", longopts, NULL)) != -1) {
+ while ((c = getopt_long(argc, argv, "Cchrn:s:V", longopts, NULL)) != -1) {
switch (c) {
+ case 'C':
+ cmd = SYSLOG_ACTION_CLEAR;
+ break;
case 'c':
cmd = SYSLOG_ACTION_READ_CLEAR;
break;
@@ -195,6 +200,9 @@ int main(int argc, char *argv[])
print_buffer(buf, n, flags);
free(buf);
break;
+ case SYSLOG_ACTION_CLEAR:
+ n = klogctl(cmd, NULL, 0);
+ break;
case SYSLOG_ACTION_CONSOLE_LEVEL:
n = klogctl(cmd, NULL, console_level);
break;