diff options
author | Karel Zak | 2011-07-01 14:33:27 +0200 |
---|---|---|
committer | Karel Zak | 2011-07-01 14:33:27 +0200 |
commit | 0419986053aefbe91afebbc66440b8d6c50290ea (patch) | |
tree | a24b5d5a45d2abaac2a5e1dff092389aa390533b /sys-utils | |
parent | dmesg: refactoring - cleanup main() code (diff) | |
download | kernel-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')
-rw-r--r-- | sys-utils/dmesg.1 | 2 | ||||
-rw-r--r-- | sys-utils/dmesg.c | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/sys-utils/dmesg.1 b/sys-utils/dmesg.1 index c56bc9e57..64234d0c0 100644 --- a/sys-utils/dmesg.1 +++ b/sys-utils/dmesg.1 @@ -19,6 +19,8 @@ and mail the .I boot.messages file to whoever can debug their problem. .SH OPTIONS +.IP "\fB\-C, \-\-clear\fP" +Clear the ring buffer. .IP "\fB\-c, \-\-read-clear\fP" Clear the ring buffer contents after printing. .IP "\fB\-h, \-\-help\fP" 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; |