Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 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
	/* file descriptors */
29
	int		ctl;
30
	int		event;
31
	int		addr;
32
	int		data;
33
	Biobuf	*body;
34
 
35
	/* event input */
36
	char		buf[512];
37
	char		*bufp;
38
	int		nbuf;
39
	Event	e[NEVENT];
40
 
41
	int		id;
42
	int		open;
43
	Channel	*cevent;
44
};
45
 
46
struct Message
47
{
48
	Window	*w;
49
	int		ctlfd;
50
	char		*name;
51
	char		*replyname;
52
	uchar	opened;
53
	uchar	dirty;
54
	uchar	isreply;
55
	uchar	deleted;
56
	uchar	writebackdel;
57
	uchar	tagposted;
58
	uchar	recursed;
59
	uchar	level;
60
 
61
	/* header info */
62
	char		*fromcolon;	/* from header file; all rest are from info file */
63
	char		*from;
64
	char		*to;
65
	char		*cc;
66
	char		*replyto;
67
	char		*date;
68
	char		*subject;
69
	char		*type;
70
	char		*disposition;
71
	char		*filename;
72
	char		*digest;
73
 
74
	Message	*next;	/* next in this mailbox */
75
	Message	*prev;	/* prev in this mailbox */
76
	Message	*head;	/* first subpart */
77
	Message	*tail;		/* last subpart */
78
};
79
 
80
enum
81
{
82
	NARGS		= 100,
83
	NARGCHAR	= 8*1024,
84
	EXECSTACK 	= STACK+(NARGS+1)*sizeof(char*)+NARGCHAR
85
};
86
 
87
struct Exec
88
{
89
	char		*prog;
90
	char		**argv;
91
	int		p[2];	/* p[1] is write to program; p[0] set to prog fd 0*/
92
	int		q[2];	/* q[0] is read from program; q[1] set to prog fd 1 */
93
	Channel	*sync;
94
};
95
 
96
extern	Window*	newwindow(void);
97
extern	int		winopenfile(Window*, char*);
98
extern	void		winopenbody(Window*, int);
99
extern	void		winclosebody(Window*);
100
extern	void		wintagwrite(Window*, char*, int);
101
extern	void		winname(Window*, char*);
102
extern	void		winwriteevent(Window*, Event*);
103
extern	void		winread(Window*, uint, uint, char*);
104
extern	int		windel(Window*, int);
105
extern	void		wingetevent(Window*, Event*);
106
extern	void		wineventproc(void*);
107
extern	void		winwritebody(Window*, char*, int);
108
extern	void		winclean(Window*);
109
extern	int		winselect(Window*, char*, int);
110
extern	char*	winselection(Window*);
111
extern	int		winsetaddr(Window*, char*, int);
112
extern	char*	winreadbody(Window*, int*);
113
extern	void		windormant(Window*);
114
extern	void		winsetdump(Window*, char*, char*);
115
 
116
extern	void		readmbox(Message*, char*, char*);
117
extern	void		rewritembox(Window*, Message*);
118
 
119
extern	void		mkreply(Message*, char*, char*, Plumbattr*, char*);
120
extern	void		delreply(Message*);
121
 
122
extern	int		mesgadd(Message*, char*, Dir*, char*);
123
extern	void		mesgmenu(Window*, Message*);
124
extern	void		mesgmenunew(Window*, Message*);
125
extern	int		mesgopen(Message*, char*, char*, Message*, int, char*);
126
extern	void		mesgctl(void*);
127
extern	void		mesgsend(Message*);
128
extern	void		mesgdel(Message*, Message*);
129
extern	void		mesgmenudel(Window*, Message*, Message*);
130
extern	void		mesgmenumark(Window*, char*, char*);
131
extern	void		mesgmenumarkdel(Window*, Message*, Message*, int);
132
extern	Message*	mesglookup(Message*, char*, char*);
133
extern	Message*	mesglookupfile(Message*, char*, char*);
134
extern	void		mesgfreeparts(Message*);
135
 
136
extern	char*	readfile(char*, char*, int*);
137
extern	char*	readbody(char*, char*, int*);
138
extern	void		ctlprint(int, char*, ...);
139
extern	void*	emalloc(uint);
140
extern	void*	erealloc(void*, uint);
141
extern	char*	estrdup(char*);
142
extern	char*	estrstrdup(char*, char*);
143
extern	char*	egrow(char*, char*, char*);
144
extern	char*	eappend(char*, char*, char*);
145
extern	void		error(char*, ...);
146
extern	int		tokenizec(char*, char**, int, char*);
147
extern	void		execproc(void*);
148
 
149
#pragma	varargck	argpos	error	1
150
#pragma	varargck	argpos	ctlprint	2
151
 
152
extern	Window	*wbox;
153
extern	Message	mbox;
154
extern	Message	replies;
155
extern	char		*fsname;
156
extern	int		plumbsendfd;
157
extern	int		plumbseemailfd;
158
extern	char		*home;
159
extern	char		*outgoing;
160
extern	char		*mailboxdir;
161
extern	char		*user;
162
extern	char		deleted[];
163
extern	int		wctlfd;
164
extern	int		shortmenu;