⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dmesg.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
/* *	Suck up system messages */#include <stdio.h>#include <sys/param.h>#include <a.out.h>char	msgbuf[MSGBUFS];char	*msgbufp;int	sflg;int	of	= -1;struct {	char	*omsgflg;	int	omindex;	char	omsgbuf[MSGBUFS];} omesg;struct nlist nl[3] = {	{"_msgbuf"},	{"_msgbufp"}};main(argc, argv)char **argv;{	int mem;	register char *mp, *omp, *mstart;	int samef;	if (argc>1 && argv[1][0] == '-') {		sflg++;		argc--;		argv++;	}	if (sflg)		of = open("/usr/adm/msgbuf", 2);	read(of, (char *)&omesg, sizeof(omesg));	lseek(of, 0L, 0);	sflg = 0;	nlist(argc>2? argv[2]:"/unix", nl);	if (nl[0].n_type==0)		done("No namelist\n");	if ((mem = open((argc>1? argv[1]: "/dev/mem"), 0)) < 0)		done("No mem\n");	lseek(mem, (long)nl[0].n_value, 0);	read(mem, msgbuf, MSGBUFS);	lseek(mem, (long)nl[1].n_value, 0);	read(mem, (char *)&msgbufp, sizeof(msgbufp));	if (msgbufp < (char *)nl[0].n_value || msgbufp >= (char *)nl[0].n_value+MSGBUFS)		done("Namelist mismatch\n");	msgbufp += msgbuf - (char *)nl[0].n_value;	mstart = &msgbuf[omesg.omindex];	omp = &omesg.omsgbuf[msgbufp-msgbuf];	mp = msgbufp;	samef = 1;	do {		if (*mp++ != *omp++) {			mstart = msgbufp;			samef = 0;			pdate();			printf("...\n");			break;		}		if (mp == &msgbuf[MSGBUFS])			mp = msgbuf;		if (omp == &omesg.omsgbuf[MSGBUFS])			omp = omesg.omsgbuf;	} while (mp != mstart);	if (samef && mstart == msgbufp)		exit(0);	mp = mstart;	do {		pdate();		if (*mp)			putchar(*mp);		mp++;		if (mp == &msgbuf[MSGBUFS])			mp = msgbuf;	} while (mp != msgbufp);	done((char *)NULL);}done(s)char *s;{	register char *p, *q;	if (s && s!=omesg.omsgflg && sflg==0) {		pdate();		printf(s);	}	omesg.omsgflg = s;	q = omesg.omsgbuf;	for (p = msgbuf; p < &msgbuf[MSGBUFS]; )		*q++ = *p++;	omesg.omindex = msgbufp - msgbuf;	write(of, (char *)&omesg, sizeof(omesg));	exit(s!=NULL);}pdate(){	extern char *ctime();	static firstime;	time_t tbuf;	if (firstime==0) {		firstime++;		time(&tbuf);		printf("\n%.12s\n", ctime(&tbuf)+4);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -