plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

dat.h (4205B)


      1 typedef struct Event Event;
      2 typedef struct Exec Exec;
      3 typedef struct Message Message;
      4 typedef struct Window Window;
      5 
      6 enum
      7 {
      8 	STACK		= 8192,
      9 	EVENTSIZE	= 256,
     10 	NEVENT		= 5
     11 };
     12 
     13 struct Event
     14 {
     15 	int	c1;
     16 	int	c2;
     17 	int	q0;
     18 	int	q1;
     19 	int	flag;
     20 	int	nb;
     21 	int	nr;
     22 	char	b[EVENTSIZE*UTFmax+1];
     23 	Rune	r[EVENTSIZE+1];
     24 };
     25 
     26 struct Window
     27 {
     28 	/* coordinate wineventproc and window thread */
     29 	QLock	lk;
     30 	int		ref;
     31 
     32 	/* file descriptors */
     33 	CFid*		ctl;
     34 	CFid*		event;
     35 	CFid*		addr;
     36 	CFid*		data;
     37 	CFid*		body;
     38 
     39 	/* event input */
     40 	char		buf[512];
     41 	char		*bufp;
     42 	int		nbuf;
     43 	Event	e[NEVENT];
     44 
     45 	int		id;
     46 	int		open;
     47 	Channel	*cevent;
     48 };
     49 
     50 struct Message
     51 {
     52 	Window	*w;
     53 	CFid*	ctlfd;
     54 	char		*name;
     55 	char		*replyname;
     56 	uchar	opened;
     57 	uchar	dirty;
     58 	uchar	isreply;
     59 	uchar	deleted;
     60 	uchar	writebackdel;
     61 	uchar	tagposted;
     62 	uchar	recursed;
     63 	uchar	level;
     64 	uint		replywinid;
     65 
     66 	/* header info */
     67 	char		*from;
     68 	char		*fromcolon;
     69 	char		*to;
     70 	char		*cc;
     71 	char		*replyto;
     72 	char		*sender;
     73 	char		*date;
     74 	char		*subject;
     75 	char		*type;
     76 	char		*disposition;
     77 	char		*filename;
     78 	char		*digest;
     79 
     80 	Message	*next;	/* next in this mailbox */
     81 	Message	*prev;	/* prev in this mailbox */
     82 	Message	*head;	/* first subpart */
     83 	Message	*tail;		/* last subpart */
     84 };
     85 
     86 enum
     87 {
     88 	NARGS		= 100,
     89 	NARGCHAR	= 8*1024,
     90 	EXECSTACK 	= STACK+(NARGS+1)*sizeof(char*)+NARGCHAR
     91 };
     92 
     93 struct Exec
     94 {
     95 	char		*prog;
     96 	char		**argv;
     97 	int		p[2];	/* p[1] is write to program; p[0] set to prog fd 0*/
     98 	int		q[2];	/* q[0] is read from program; q[1] set to prog fd 1 */
     99 	Channel	*sync;
    100 };
    101 
    102 extern	Window*	newwindow(void);
    103 extern	CFid*	winopenfile(Window*, char*);
    104 extern	void		winopenbody(Window*, int);
    105 extern	void		winclosebody(Window*);
    106 extern	void		wintagwrite(Window*, char*, int);
    107 extern	void		winname(Window*, char*);
    108 extern	void		winwriteevent(Window*, Event*);
    109 extern	void		winread(Window*, uint, uint, char*);
    110 extern	int		windel(Window*, int);
    111 extern	void		wingetevent(Window*, Event*);
    112 extern	void		wineventproc(void*);
    113 extern	void		winwritebody(Window*, char*, int);
    114 extern	void		winclean(Window*);
    115 extern	int		winselect(Window*, char*, int);
    116 extern	char*	winselection(Window*);
    117 extern	int		winsetaddr(Window*, char*, int);
    118 extern	char*	winreadbody(Window*, int*);
    119 extern	void		windormant(Window*);
    120 extern	void		winsetdump(Window*, char*, char*);
    121 extern	void		winincref(Window*);
    122 extern	void		windecref(Window*);
    123 
    124 extern	void		readmbox(Message*, char*, char*);
    125 extern	void		rewritembox(Window*, Message*);
    126 
    127 extern	void		mkreply(Message*, char*, char*, Plumbattr*, char*);
    128 extern	void		delreply(Message*);
    129 
    130 extern	int		mesgadd(Message*, char*, Dir*, char*);
    131 extern	void		mesgmenu(Window*, Message*);
    132 extern	void		mesgmenunew(Window*, Message*);
    133 extern	int		mesgopen(Message*, char*, char*, Message*, int, char*);
    134 extern	void		mesgctl(void*);
    135 extern	void		mesgsend(Message*);
    136 extern	void		mesgdel(Message*, Message*);
    137 extern	void		mesgmenudel(Window*, Message*, Message*);
    138 extern	void		mesgmenumark(Window*, char*, char*);
    139 extern	void		mesgmenumarkdel(Window*, Message*, Message*, int);
    140 extern	Message*	mesglookup(Message*, char*, char*);
    141 extern	Message*	mesglookupfile(Message*, char*, char*);
    142 extern	void		mesgfreeparts(Message*);
    143 extern	int		mesgcommand(Message*, char*);
    144 
    145 extern	char*	info(Message*, int, int);
    146 extern	char*	readfile(char*, char*, int*);
    147 extern	char*	readbody(char*, char*, int*);
    148 extern	void		ctlprint(CFid*, char*, ...);
    149 extern	void*	emalloc(uint);
    150 extern	void*	erealloc(void*, uint);
    151 extern	char*	estrdup(char*);
    152 extern	char*	estrstrdup(char*, char*);
    153 extern	char*	egrow(char*, char*, char*);
    154 extern	char*	eappend(char*, char*, char*);
    155 extern	void		error(char*, ...);
    156 extern	int		tokenizec(char*, char**, int, char*);
    157 extern	void		execproc(void*);
    158 extern	int		fsprint(CFid*, char*, ...);
    159 
    160 #pragma	varargck	argpos	error	1
    161 #pragma	varargck	argpos	ctlprint	2
    162 
    163 extern	Window	*wbox;
    164 extern	Message	mbox;
    165 extern	Message	replies;
    166 extern	char		*fsname;
    167 extern	CFid		*plumbsendfd;
    168 extern	CFid		*plumbseemailfd;
    169 extern	char		*home;
    170 extern	char		*outgoing;
    171 extern	char		*mailboxdir;
    172 extern	char		*mboxname;
    173 extern	char		*user;
    174 extern	char		*srvname;
    175 extern	char		deleted[];
    176 extern	int		wctlfd;
    177 extern	int		shortmenu;
    178 
    179 extern	CFsys	*mailfs;
    180 extern	CFsys	*acmefs;