]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
dmesg: add --clear (SYSLOG_ACTION_CLEAR)
authorKarel Zak <kzak@redhat.com>
Fri, 1 Jul 2011 12:33:27 +0000 (14:33 +0200)
committerKarel Zak <kzak@redhat.com>
Fri, 1 Jul 2011 12:33:27 +0000 (14:33 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
sys-utils/dmesg.1
sys-utils/dmesg.c

index c56bc9e575e1f86cb15b5e3be65c4bdef1be816f..64234d0c005aff6df2e35ed52790ce41e08397ad 100644 (file)
@@ -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"
index ac8da0c53bd3320273fc7e503b634a740f85ebe9..a53f491401e7522539aa2ee8b5eebdae40dfd68b 100644 (file)
@@ -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;