139224Sabial/*-
239224Sabial * Copyright (c) 1998 Andrzej Bialecki <abial@freebsd.org>
339224Sabial * All rights reserved.
439224Sabial *
539224Sabial * Redistribution and use in source and binary forms, with or without
639224Sabial * modification, are permitted provided that the following conditions
739224Sabial * are met:
839224Sabial * 1. Redistributions of source code must retain the above copyright
939224Sabial *    notice, this list of conditions and the following disclaimer.
1039224Sabial * 2. Redistributions in binary form must reproduce the above copyright
1139224Sabial *    notice, this list of conditions and the following disclaimer in the
1239224Sabial *    documentation and/or other materials provided with the distribution.
1339224Sabial *
1439224Sabial * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1539224Sabial * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1639224Sabial * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1739224Sabial * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1839224Sabial * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1939224Sabial * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2039224Sabial * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2139224Sabial * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2239224Sabial * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2339224Sabial * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2439224Sabial * SUCH DAMAGE.
2539224Sabial *
2650479Speter * $FreeBSD$
2739224Sabial */
2839224Sabial
2939224Sabial/*
3039224Sabial * Small replacement for 'dmesg'. It doesn't need libkvm nor /dev/kmem.
3139224Sabial */
3239224Sabial
3339224Sabial
3439224Sabial#include <stdio.h>
35173926Ssam#include <stdlib.h>
3639224Sabial#include <sys/types.h>
3739224Sabial#include <sys/sysctl.h>
3839224Sabial
3939224Sabialint
4039224Sabialmain(int argc, char *argv[])
4139224Sabial{
4239224Sabial	int len,i;
4339224Sabial	char *buf,*p;
4479155Stmm	char *mib="kern.msgbuf";
4539224Sabial
4639224Sabial	/* We use sysctlbyname, because the oid is unknown (OID_AUTO) */
4739224Sabial
4839224Sabial	/* get the buffer size */
49173926Ssam	i=sysctlbyname(mib,NULL,&len,NULL,0);
5039224Sabial	if(i) {
5139224Sabial		perror("buffer sizing");
5239224Sabial		exit(-1);
5339224Sabial	}
5439224Sabial	buf=(char *)malloc(len*sizeof(char));
55173926Ssam	i=sysctlbyname(mib,buf,&len,NULL,0);
5639224Sabial	if(i) {
5739224Sabial		perror("retrieving data");
5839224Sabial		exit(-1);
5939224Sabial	}
6039224Sabial	p=buf;
6139224Sabial	i=0;
6239224Sabial	while(p<(buf+len)) {
6339224Sabial		switch(*p) {
6439224Sabial		case '\0':
6539224Sabial			/* skip initial NULLs */
6639224Sabial			break;
6739224Sabial		default:
6839224Sabial			putchar(*p);
6939224Sabial		}
7039224Sabial		p++;
7139224Sabial	}
7239224Sabial	if(*--p!='\n') putchar('\n');
7339224Sabial	free(buf);
7439224Sabial	exit(0);
7539224Sabial}
76