debug.c

来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 109 行

C
109
字号
#include <u.h>#include <libc.h>#include <auth.h>#include <bio.h>#include "imap4d.h"voiddebuglog(char *fmt, ...){	va_list arg;	static int logfd;	if(debug == 0)		return;	if(logfd == 0)		logfd = open("/sys/log/imap4d", OWRITE);	if(logfd > 0){		va_start(arg, fmt);		fprint(logfd, "%s: ", username);		vfprint(logfd, fmt, arg);		va_end(arg);	}}voidboxVerify(Box *box){	Msg *m;	ulong seq, uid, recent;	if(box == nil)		return;	recent = 0;	seq = 0;	uid = 0;	for(m = box->msgs; m != nil; m = m->next){		if(m->seq == 0)			fprint(2, "m->seq == 0: m->seq=%lud\n", m->seq);		else if(m->seq <= seq)			fprint(2, "m->seq=%lud out of order: last=%lud\n", m->seq, seq);		seq = m->seq;		if(m->uid == 0)			fprint(2, "m->uid == 0: m->seq=%lud\n", m->seq);		else if(m->uid <= uid)			fprint(2, "m->uid=%lud out of order: last=%lud\n", m->uid, uid);		uid = m->uid;		if(m->flags & MRecent)			recent++;	}	if(seq != box->max)		fprint(2, "max=%lud, should be %lud\n", box->max, seq);	if(uid >= box->uidnext)		fprint(2, "uidnext=%lud, maxuid=%lud\n", box->uidnext, uid);	if(recent != box->recent)		fprint(2, "recent=%lud, should be %lud\n", box->recent, recent);}voidopenfiles(void){	Dir *d;	int i;	for(i = 0; i < 20; i++){		d = dirfstat(i);		if(d != nil){			fprint(2, "fd[%d]='%s' type=%c dev=%d user='%s group='%s'\n", i, d->name, d->type, d->dev, d->uid, d->gid);			free(d);		}	}}voidls(char *file){	Dir *d;	int fd, i, nd;	fd = open(file, OREAD);	if(fd < 0)		return;	/*	 * read box to find all messages	 * each one has a directory, and is in numerical order	 */	d = dirfstat(fd);	if(d == nil){		close(fd);		return;	}	if(!(d->mode & DMDIR)){		fprint(2, "file %s\n", file);		free(d);		close(fd);		return;	}	free(d);	while((nd = dirread(fd, &d)) > 0){		for(i = 0; i < nd; i++){			fprint(2, "%s/%s %c\n", file, d[i].name, "-d"[(d[i].mode & DMDIR) == DMDIR]);		}		free(d);	}	close(fd);}

⌨️ 快捷键说明

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