From 0419986053aefbe91afebbc66440b8d6c50290ea Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Fri, 1 Jul 2011 14:33:27 +0200 Subject: dmesg: add --clear (SYSLOG_ACTION_CLEAR) Signed-off-by: Karel Zak --- sys-utils/dmesg.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'sys-utils/dmesg.c') 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; -- cgit v1.2.3-55-g7522