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

📄 dat.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
typedef struct Message Message;struct Message{	int	id;	int	refs;	int	subname;	char	name[Elemlen];	// pointers into message	char	*start;		// start of message	char	*end;		// end of message	char	*header;	// start of header	char	*hend;		// end of header	int	hlen;		// length of header minus ignored fields	char	*mheader;	// start of mime header	char	*mhend;		// end of mime header	char	*body;		// start of body	char	*bend;		// end of body	char	*rbody;		// raw (unprocessed) body	char	*rbend;		// end of raw (unprocessed) body	char	*lim;	char	deleted;	char	inmbox;	char	mallocd;	// message is malloc'd	char	ballocd;	// body is malloc'd	char	hallocd;	// header is malloce'd	// mail info	String	*unixheader;	String	*unixfrom;	String	*unixdate;	String	*from822;	String	*sender822;	String	*to822;	String	*bcc822;	String	*cc822;	String	*replyto822;	String	*date822;	String	*inreplyto822;	String	*subject822;	String	*messageid822;	String	*addrs;	String	*mimeversion;	String	*sdigest;	// mime info	String	*boundary;	String	*type;	int	encoding;	int	disposition;	String	*charset;	String	*filename;	int	converted;	int	decoded;	char	lines[10];	// number of lines in rawbody	Message	*next;		// same level	Message	*part;		// down a level	Message	*whole;		// up a level	uchar	digest[SHA1dlen];	vlong	imapuid;	// used by imap4	char		uidl[80];	// used by pop3	int		mesgno;};enum{	// encodings	Enone=	0,	Ebase64,	Equoted,	// disposition possibilities	Dnone=	0,	Dinline,	Dfile,	Dignore,	PAD64=	'=',};typedef struct Mailbox Mailbox;struct Mailbox{	QLock;	int	refs;	Mailbox	*next;	int	id;	int	dolock;		// lock when syncing?	int	std;	char	name[Elemlen];	char	path[Pathlen];	Dir	*d;	Message	*root;	int	vers;		// goes up each time mailbox is read	ulong waketime;	char	*(*sync)(Mailbox*, int);	void	(*close)(Mailbox*);	char	*(*fetch)(Mailbox*, Message*);	char	*(*ctl)(Mailbox*, int, char**);	void	*aux;		// private to Mailbox implementation};typedef char *Mailboxinit(Mailbox*, char*);extern Message	*root;extern Mailboxinit	plan9mbox;extern Mailboxinit	pop3mbox;extern Mailboxinit	imap4mbox;char*		syncmbox(Mailbox*, int);char*		geterrstr(void);void*		emalloc(ulong);void*		erealloc(void*, ulong);Message*	newmessage(Message*);void		delmessage(Mailbox*, Message*);void		delmessages(int, char**);int		newid(void);void		mailplumb(Mailbox*, Message*, int);char*		newmbox(char*, char*, int);void		freembox(char*);void		logmsg(char*, Message*);void		msgincref(Message*);void		msgdecref(Mailbox*, Message*);void		mboxincref(Mailbox*);void		mboxdecref(Mailbox*);void		convert(Message*);void		decode(Message*);int		cistrncmp(char*, char*, int);int		cistrcmp(char*, char*);int		decquoted(char*, char*, char*, int);int		xtoutf(char*, char**, char*, char*);void		countlines(Message*);int		headerlen(Message*);void		parse(Message*, int, Mailbox*, int);void		parseheaders(Message*, int, Mailbox*, int);void		parsebody(Message*, Mailbox*);void		parseunix(Message*);String*	date822tounix(char*);int		fidmboxrefs(Mailbox*);int		hashmboxrefs(Mailbox*);void		checkmboxrefs(void);extern int	debug;extern int	fflag;extern int	logging;extern char	user[Elemlen];extern char	stdmbox[Pathlen];extern QLock	mbllock;extern Mailbox	*mbl;extern char	*mntpt;extern int	biffing;extern int	plumbing;extern char*	Enotme;enum{	/* mail subobjects */	Qbody,	Qbcc,	Qcc,	Qdate,	Qdigest,	Qdisposition,	Qfilename,	Qfrom,	Qheader,	Qinreplyto,	Qlines,	Qmimeheader,	Qmessageid,	Qraw,	Qrawbody,	Qrawheader,	Qrawunix,	Qreplyto,	Qsender,	Qsubject,	Qto,	Qtype,	Qunixheader,	Qinfo,	Qunixdate,	Qmax,	/* other files */	Qtop,	Qmbox,	Qdir,	Qctl,	Qmboxctl,};#define PATH(id, f)	((((id)&0xfffff)<<10) | (f))#define FILE(p)		((p) & 0x3ff)char *dirtab[];// hash table to aid in name lookup, all files have an entrytypedef struct Hash Hash;struct Hash {	Hash	*next;	char	*name;	ulong	ppath;	Qid	qid;	Mailbox	*mb;	Message	*m;};Hash	*hlook(ulong, char*);void	henter(ulong, char*, Qid, Message*, Mailbox*);void	hfree(ulong, char*);ulong msgallocd, msgfreed;

⌨️ 快捷键说明

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