summaryrefslogtreecommitdiffstats
path: root/release/picobsd/tinyware/msg
diff options
context:
space:
mode:
authorabial <abial@FreeBSD.org>1998-09-15 07:35:58 +0000
committerabial <abial@FreeBSD.org>1998-09-15 07:35:58 +0000
commitb8aadb85d5f1eabddb64eb1c073553c22040be97 (patch)
treee0d07c402a27490d50a60cf8958380adad54bf04 /release/picobsd/tinyware/msg
parent5818d2483476a89ea4c70ac42a55ccdc3ed89449 (diff)
downloadFreeBSD-src-b8aadb85d5f1eabddb64eb1c073553c22040be97.zip
FreeBSD-src-b8aadb85d5f1eabddb64eb1c073553c22040be97.tar.gz
Change name of 'dm' to 'msg'. As Bruce noticed, it conflicts with
dungeon master, if anyone would like to play it on picobsd floppy... :-) Noticed by: bde
Diffstat (limited to 'release/picobsd/tinyware/msg')
-rw-r--r--release/picobsd/tinyware/msg/Makefile9
-rw-r--r--release/picobsd/tinyware/msg/README15
-rw-r--r--release/picobsd/tinyware/msg/msg.c74
3 files changed, 98 insertions, 0 deletions
diff --git a/release/picobsd/tinyware/msg/Makefile b/release/picobsd/tinyware/msg/Makefile
new file mode 100644
index 0000000..5de8c7c
--- /dev/null
+++ b/release/picobsd/tinyware/msg/Makefile
@@ -0,0 +1,9 @@
+# $Id$
+#
+PROG=msg
+SRCS= msg.c
+NOMAN=yes
+
+.include <bsd.prog.mk>
+
+
diff --git a/release/picobsd/tinyware/msg/README b/release/picobsd/tinyware/msg/README
new file mode 100644
index 0000000..a38101b
--- /dev/null
+++ b/release/picobsd/tinyware/msg/README
@@ -0,0 +1,15 @@
+1998.09.14, Warsaw
+
+This program replaces 'dmesg' utility, aand allows you to retrieve the
+system's message buffer without resorting to such dirty tricks as normal
+'dmesg' uses (using libkvm and /dev/kmem to directly read kernel
+memory.. *shudder*).
+
+This utility uses sysctl(3) interface. The mib variable it uses was
+recently added to the kernel sources, so if you don't mind patching your
+kernel tree, contact me directly - the patches are very small and simple.
+
+Andrzej Bialecki
+<abial@nask.pl>
+
+$Id$
diff --git a/release/picobsd/tinyware/msg/msg.c b/release/picobsd/tinyware/msg/msg.c
new file mode 100644
index 0000000..f3dc410
--- /dev/null
+++ b/release/picobsd/tinyware/msg/msg.c
@@ -0,0 +1,74 @@
+/*-
+ * Copyright (c) 1998 Andrzej Bialecki <abial@freebsd.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id$
+ */
+
+/*
+ * Small replacement for 'dmesg'. It doesn't need libkvm nor /dev/kmem.
+ */
+
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/sysctl.h>
+
+int
+main(int argc, char *argv[])
+{
+ int len,i;
+ char *buf,*p;
+ char *mib="machdep.msgbuf";
+
+ /* We use sysctlbyname, because the oid is unknown (OID_AUTO) */
+
+ /* get the buffer size */
+ i=sysctlbyname(mib,NULL,&len,NULL,NULL);
+ if(i) {
+ perror("buffer sizing");
+ exit(-1);
+ }
+ buf=(char *)malloc(len*sizeof(char));
+ i=sysctlbyname(mib,buf,&len,NULL,NULL);
+ if(i) {
+ perror("retrieving data");
+ exit(-1);
+ }
+ p=buf;
+ i=0;
+ while(p<(buf+len)) {
+ switch(*p) {
+ case '\0':
+ /* skip initial NULLs */
+ break;
+ default:
+ putchar(*p);
+ }
+ p++;
+ }
+ if(*--p!='\n') putchar('\n');
+ free(buf);
+ exit(0);
+}
OpenPOWER on IntegriCloud