Add support for 'dmesg -c' which clears the dmesg buffer after it has
been printed. This provides compatibility with other *nix systems (including Linux). While here use stdbool booleans for 'all'. PR: bin/178295 Submitted by: Levent Serinol <lserinol@gmail.com> Reviewed by: will
This commit is contained in:
parent
656e9198b3
commit
11967f3ce1
@ -36,7 +36,7 @@
|
||||
.Nd "display the system message buffer"
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl a
|
||||
.Op Fl ac
|
||||
.Op Fl M Ar core Op Fl N Ar system
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
@ -59,6 +59,8 @@ Show all data in the message buffer.
|
||||
This includes any syslog records and
|
||||
.Pa /dev/console
|
||||
output.
|
||||
.It Fl c
|
||||
Clear the kernel buffer after printing.
|
||||
.It Fl M
|
||||
Extract values associated with the name list from the specified core.
|
||||
.It Fl N
|
||||
|
@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$");
|
||||
#include <locale.h>
|
||||
#include <nlist.h>
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
@ -79,15 +80,20 @@ main(int argc, char *argv[])
|
||||
kvm_t *kd;
|
||||
size_t buflen, bufpos;
|
||||
long pri;
|
||||
int all, ch;
|
||||
int ch, clear;
|
||||
bool all;
|
||||
|
||||
all = 0;
|
||||
all = false;
|
||||
clear = false;
|
||||
(void) setlocale(LC_CTYPE, "");
|
||||
memf = nlistf = NULL;
|
||||
while ((ch = getopt(argc, argv, "aM:N:")) != -1)
|
||||
while ((ch = getopt(argc, argv, "acM:N:")) != -1)
|
||||
switch(ch) {
|
||||
case 'a':
|
||||
all++;
|
||||
all = true;
|
||||
break;
|
||||
case 'c':
|
||||
clear = true;
|
||||
break;
|
||||
case 'M':
|
||||
memf = optarg;
|
||||
@ -190,12 +196,16 @@ main(int argc, char *argv[])
|
||||
(void)strvisx(visbp, p, nextp - p, 0);
|
||||
(void)printf("%s", visbp);
|
||||
}
|
||||
if (clear)
|
||||
if (sysctlbyname("kern.msgbuf_clear", NULL, NULL, &clear, sizeof(int)))
|
||||
err(1, "sysctl kern.msgbuf_clear");
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
void
|
||||
usage(void)
|
||||
{
|
||||
(void)fprintf(stderr, "usage: dmesg [-a] [-M core [-N system]]\n");
|
||||
fprintf(stderr, "usage: dmesg [-ac] [-M core [-N system]]\n");
|
||||
exit(1);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user