msg.c revision 173926
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: head/release/picobsd/tinyware/msg/msg.c 173926 2007-11-26 05:03:55Z sam $ 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