X-Git-Url: https://git.saurik.com/apple/system_cmds.git/blobdiff_plain/09fd88e447556f7fa24b9efd9268364ff85d2dbf..c03df0e9b5e00ac087fc7c53f812f6d1dd92f2a8:/dmesg.tproj/dmesg.c diff --git a/dmesg.tproj/dmesg.c b/dmesg.tproj/dmesg.c index 3b73c88..373653d 100644 --- a/dmesg.tproj/dmesg.c +++ b/dmesg.tproj/dmesg.c @@ -54,84 +54,34 @@ * SUCH DAMAGE. */ -#include -#include - -#include -#include #include #include -#include -#include #include #include - -void usage __P((void)); +void +usage() { + (void)fprintf(stderr, "usage: sudo dmesg\n"); + exit(1); +} int -main(argc, argv) - int argc; - char *argv[]; -{ - register int ch, newl, skip; - register char *p, *ep; - struct msgbuf cur; - char buf[5]; +main(int argc, char **argv) { + char msgbuf[16*1024], *visbuf; + long data_size; if (argc > 1) usage(); - if (proc_kmsgbuf(&cur, sizeof(struct msgbuf)) == 0){ + if ((data_size = proc_kmsgbuf(msgbuf, sizeof(msgbuf))) == 0){ perror("Unable to obtain kernel buffer"); usage(); - exit(1); } - if (cur.msg_magic != MSG_MAGIC) { - perror("magic number incorrect"); - exit(1); - } - if (cur.msg_bufx >= MSG_BSIZE) - cur.msg_bufx = 0; - - /* - * The message buffer is circular; start at the read pointer, and - * go to the write pointer - 1. - */ - p = cur.msg_bufc + cur.msg_bufx; - ep = cur.msg_bufc + cur.msg_bufx - 1; - for (newl = skip = 0; p != ep; ++p) { - if (p == cur.msg_bufc + MSG_BSIZE) - p = cur.msg_bufc; - ch = *p; - /* Skip "\n<.*>" syslog sequences. */ - if (skip) { - if (ch == '>') - newl = skip = 0; - continue; - } - if (newl && ch == '<') { - skip = 1; - continue; - } - if (ch == '\0') - continue; - newl = ch == '\n'; - (void)vis(buf, ch, 0, 0); - if (buf[1] == 0) - (void)putchar(buf[0]); - else - (void)printf("%s", buf); - } - if (!newl) - (void)putchar('\n'); + visbuf = malloc(data_size*4); + strvis(visbuf, msgbuf, 0); + printf("%s", visbuf); + free(visbuf); exit(0); } -void -usage() -{ - (void)fprintf(stderr, "usage: sudo dmesg\n"); - exit(1); -}