Blame


1 b3994ec5 2003-12-11 devnull enum
2 b3994ec5 2003-12-11 devnull {
3 b3994ec5 2003-12-11 devnull Qdir,
4 b3994ec5 2003-12-11 devnull Qacme,
5 b3994ec5 2003-12-11 devnull Qcons,
6 b3994ec5 2003-12-11 devnull Qconsctl,
7 b3994ec5 2003-12-11 devnull Qdraw,
8 b3994ec5 2003-12-11 devnull Qeditout,
9 b3994ec5 2003-12-11 devnull Qindex,
10 b3994ec5 2003-12-11 devnull Qlabel,
11 b3994ec5 2003-12-11 devnull Qnew,
12 b3994ec5 2003-12-11 devnull
13 b3994ec5 2003-12-11 devnull QWaddr,
14 b3994ec5 2003-12-11 devnull QWbody,
15 b3994ec5 2003-12-11 devnull QWctl,
16 b3994ec5 2003-12-11 devnull QWdata,
17 b3994ec5 2003-12-11 devnull QWeditout,
18 b3994ec5 2003-12-11 devnull QWevent,
19 b3994ec5 2003-12-11 devnull QWrdsel,
20 b3994ec5 2003-12-11 devnull QWwrsel,
21 b3994ec5 2003-12-11 devnull QWtag,
22 b3994ec5 2003-12-11 devnull QMAX,
23 b3994ec5 2003-12-11 devnull };
24 b3994ec5 2003-12-11 devnull
25 b3994ec5 2003-12-11 devnull enum
26 b3994ec5 2003-12-11 devnull {
27 b3994ec5 2003-12-11 devnull Blockincr = 256,
28 b3994ec5 2003-12-11 devnull Maxblock = 8*1024,
29 b3994ec5 2003-12-11 devnull NRange = 10,
30 b3994ec5 2003-12-11 devnull Infinity = 0x7FFFFFFF, /* huge value for regexp address */
31 b3994ec5 2003-12-11 devnull };
32 b3994ec5 2003-12-11 devnull
33 b3994ec5 2003-12-11 devnull typedef struct Block Block;
34 b3994ec5 2003-12-11 devnull typedef struct Buffer Buffer;
35 b3994ec5 2003-12-11 devnull typedef struct Command Command;
36 b3994ec5 2003-12-11 devnull typedef struct Column Column;
37 b3994ec5 2003-12-11 devnull typedef struct Dirlist Dirlist;
38 b3994ec5 2003-12-11 devnull typedef struct Dirtab Dirtab;
39 b3994ec5 2003-12-11 devnull typedef struct Disk Disk;
40 b3994ec5 2003-12-11 devnull typedef struct Expand Expand;
41 b3994ec5 2003-12-11 devnull typedef struct Fid Fid;
42 b3994ec5 2003-12-11 devnull typedef struct File File;
43 b3994ec5 2003-12-11 devnull typedef struct Elog Elog;
44 b3994ec5 2003-12-11 devnull typedef struct Mntdir Mntdir;
45 b3994ec5 2003-12-11 devnull typedef struct Range Range;
46 b3994ec5 2003-12-11 devnull typedef struct Rangeset Rangeset;
47 b3994ec5 2003-12-11 devnull typedef struct Reffont Reffont;
48 b3994ec5 2003-12-11 devnull typedef struct Row Row;
49 b3994ec5 2003-12-11 devnull typedef struct Runestr Runestr;
50 b3994ec5 2003-12-11 devnull typedef struct Text Text;
51 b3994ec5 2003-12-11 devnull typedef struct Timer Timer;
52 b3994ec5 2003-12-11 devnull typedef struct Window Window;
53 b3994ec5 2003-12-11 devnull typedef struct Xfid Xfid;
54 b3994ec5 2003-12-11 devnull
55 b3994ec5 2003-12-11 devnull struct Runestr
56 b3994ec5 2003-12-11 devnull {
57 b3994ec5 2003-12-11 devnull Rune *r;
58 b3994ec5 2003-12-11 devnull int nr;
59 b3994ec5 2003-12-11 devnull };
60 b3994ec5 2003-12-11 devnull
61 b3994ec5 2003-12-11 devnull struct Range
62 b3994ec5 2003-12-11 devnull {
63 b3994ec5 2003-12-11 devnull int q0;
64 b3994ec5 2003-12-11 devnull int q1;
65 b3994ec5 2003-12-11 devnull };
66 b3994ec5 2003-12-11 devnull
67 b3994ec5 2003-12-11 devnull struct Block
68 b3994ec5 2003-12-11 devnull {
69 b3994ec5 2003-12-11 devnull uint addr; /* disk address in bytes */
70 b3994ec5 2003-12-11 devnull union
71 b3994ec5 2003-12-11 devnull {
72 b3994ec5 2003-12-11 devnull uint n; /* number of used runes in block */
73 b3994ec5 2003-12-11 devnull Block *next; /* pointer to next in free list */
74 b3994ec5 2003-12-11 devnull } u;
75 b3994ec5 2003-12-11 devnull };
76 b3994ec5 2003-12-11 devnull
77 b3994ec5 2003-12-11 devnull struct Disk
78 b3994ec5 2003-12-11 devnull {
79 b3994ec5 2003-12-11 devnull int fd;
80 b3994ec5 2003-12-11 devnull uint addr; /* length of temp file */
81 b3994ec5 2003-12-11 devnull Block *free[Maxblock/Blockincr+1];
82 b3994ec5 2003-12-11 devnull };
83 b3994ec5 2003-12-11 devnull
84 b3994ec5 2003-12-11 devnull Disk* diskinit(void);
85 b3994ec5 2003-12-11 devnull Block* disknewblock(Disk*, uint);
86 b3994ec5 2003-12-11 devnull void diskrelease(Disk*, Block*);
87 b3994ec5 2003-12-11 devnull void diskread(Disk*, Block*, Rune*, uint);
88 b3994ec5 2003-12-11 devnull void diskwrite(Disk*, Block**, Rune*, uint);
89 b3994ec5 2003-12-11 devnull
90 b3994ec5 2003-12-11 devnull struct Buffer
91 b3994ec5 2003-12-11 devnull {
92 b3994ec5 2003-12-11 devnull uint nc;
93 b3994ec5 2003-12-11 devnull Rune *c; /* cache */
94 b3994ec5 2003-12-11 devnull uint cnc; /* bytes in cache */
95 b3994ec5 2003-12-11 devnull uint cmax; /* size of allocated cache */
96 b3994ec5 2003-12-11 devnull uint cq; /* position of cache */
97 b3994ec5 2003-12-11 devnull int cdirty; /* cache needs to be written */
98 b3994ec5 2003-12-11 devnull uint cbi; /* index of cache Block */
99 b3994ec5 2003-12-11 devnull Block **bl; /* array of blocks */
100 b3994ec5 2003-12-11 devnull uint nbl; /* number of blocks */
101 b3994ec5 2003-12-11 devnull };
102 b3994ec5 2003-12-11 devnull void bufinsert(Buffer*, uint, Rune*, uint);
103 b3994ec5 2003-12-11 devnull void bufdelete(Buffer*, uint, uint);
104 b3994ec5 2003-12-11 devnull uint bufload(Buffer*, uint, int, int*);
105 b3994ec5 2003-12-11 devnull void bufread(Buffer*, uint, Rune*, uint);
106 b3994ec5 2003-12-11 devnull void bufclose(Buffer*);
107 b3994ec5 2003-12-11 devnull void bufreset(Buffer*);
108 b3994ec5 2003-12-11 devnull
109 b3994ec5 2003-12-11 devnull struct Elog
110 b3994ec5 2003-12-11 devnull {
111 b3994ec5 2003-12-11 devnull short type; /* Delete, Insert, Filename */
112 b3994ec5 2003-12-11 devnull uint q0; /* location of change (unused in f) */
113 b3994ec5 2003-12-11 devnull uint nd; /* number of deleted characters */
114 b3994ec5 2003-12-11 devnull uint nr; /* # runes in string or file name */
115 b3994ec5 2003-12-11 devnull Rune *r;
116 b3994ec5 2003-12-11 devnull };
117 b3994ec5 2003-12-11 devnull void elogterm(File*);
118 b3994ec5 2003-12-11 devnull void elogclose(File*);
119 b3994ec5 2003-12-11 devnull void eloginsert(File*, int, Rune*, int);
120 b3994ec5 2003-12-11 devnull void elogdelete(File*, int, int);
121 b3994ec5 2003-12-11 devnull void elogreplace(File*, int, int, Rune*, int);
122 b3994ec5 2003-12-11 devnull void elogapply(File*);
123 b3994ec5 2003-12-11 devnull
124 b3994ec5 2003-12-11 devnull struct File
125 b3994ec5 2003-12-11 devnull {
126 b3994ec5 2003-12-11 devnull Buffer b; /* the data */
127 b3994ec5 2003-12-11 devnull Buffer delta; /* transcript of changes */
128 b3994ec5 2003-12-11 devnull Buffer epsilon; /* inversion of delta for redo */
129 b3994ec5 2003-12-11 devnull Buffer *elogbuf; /* log of pending editor changes */
130 b3994ec5 2003-12-11 devnull Elog elog; /* current pending change */
131 b3994ec5 2003-12-11 devnull Rune *name; /* name of associated file */
132 b3994ec5 2003-12-11 devnull int nname; /* size of name */
133 b3994ec5 2003-12-11 devnull uvlong qidpath; /* of file when read */
134 b3994ec5 2003-12-11 devnull uint mtime; /* of file when read */
135 b3994ec5 2003-12-11 devnull int dev; /* of file when read */
136 b3994ec5 2003-12-11 devnull int unread; /* file has not been read from disk */
137 b3994ec5 2003-12-11 devnull int editclean; /* mark clean after edit command */
138 b3994ec5 2003-12-11 devnull
139 b3994ec5 2003-12-11 devnull int seq; /* if seq==0, File acts like Buffer */
140 b3994ec5 2003-12-11 devnull int mod;
141 b3994ec5 2003-12-11 devnull Text *curtext; /* most recently used associated text */
142 b3994ec5 2003-12-11 devnull Text **text; /* list of associated texts */
143 b3994ec5 2003-12-11 devnull int ntext;
144 b3994ec5 2003-12-11 devnull int dumpid; /* used in dumping zeroxed windows */
145 b3994ec5 2003-12-11 devnull };
146 b3994ec5 2003-12-11 devnull File* fileaddtext(File*, Text*);
147 b3994ec5 2003-12-11 devnull void fileclose(File*);
148 b3994ec5 2003-12-11 devnull void filedelete(File*, uint, uint);
149 b3994ec5 2003-12-11 devnull void filedeltext(File*, Text*);
150 b3994ec5 2003-12-11 devnull void fileinsert(File*, uint, Rune*, uint);
151 b3994ec5 2003-12-11 devnull uint fileload(File*, uint, int, int*);
152 b3994ec5 2003-12-11 devnull void filemark(File*);
153 b3994ec5 2003-12-11 devnull void filereset(File*);
154 b3994ec5 2003-12-11 devnull void filesetname(File*, Rune*, int);
155 b3994ec5 2003-12-11 devnull void fileundelete(File*, Buffer*, uint, uint);
156 b3994ec5 2003-12-11 devnull void fileuninsert(File*, Buffer*, uint, uint);
157 b3994ec5 2003-12-11 devnull void fileunsetname(File*, Buffer*);
158 b3994ec5 2003-12-11 devnull void fileundo(File*, int, uint*, uint*);
159 b3994ec5 2003-12-11 devnull uint fileredoseq(File*);
160 b3994ec5 2003-12-11 devnull
161 b3994ec5 2003-12-11 devnull enum /* Text.what */
162 b3994ec5 2003-12-11 devnull {
163 b3994ec5 2003-12-11 devnull Columntag,
164 b3994ec5 2003-12-11 devnull Rowtag,
165 b3994ec5 2003-12-11 devnull Tag,
166 b3994ec5 2003-12-11 devnull Body,
167 b3994ec5 2003-12-11 devnull };
168 b3994ec5 2003-12-11 devnull
169 b3994ec5 2003-12-11 devnull struct Text
170 b3994ec5 2003-12-11 devnull {
171 b3994ec5 2003-12-11 devnull File *file;
172 b3994ec5 2003-12-11 devnull Frame fr;
173 b3994ec5 2003-12-11 devnull Reffont *reffont;
174 b3994ec5 2003-12-11 devnull uint org;
175 b3994ec5 2003-12-11 devnull uint q0;
176 b3994ec5 2003-12-11 devnull uint q1;
177 b3994ec5 2003-12-11 devnull int what;
178 b3994ec5 2003-12-11 devnull int tabstop;
179 b3994ec5 2003-12-11 devnull Window *w;
180 b3994ec5 2003-12-11 devnull Rectangle scrollr;
181 b3994ec5 2003-12-11 devnull Rectangle lastsr;
182 b3994ec5 2003-12-11 devnull Rectangle all;
183 b3994ec5 2003-12-11 devnull Row *row;
184 b3994ec5 2003-12-11 devnull Column *col;
185 b3994ec5 2003-12-11 devnull
186 b3994ec5 2003-12-11 devnull uint eq0; /* start of typing for ESC */
187 b3994ec5 2003-12-11 devnull uint cq0; /* cache position */
188 b3994ec5 2003-12-11 devnull int ncache; /* storage for insert */
189 b3994ec5 2003-12-11 devnull int ncachealloc;
190 b3994ec5 2003-12-11 devnull Rune *cache;
191 b3994ec5 2003-12-11 devnull int nofill;
192 b3994ec5 2003-12-11 devnull };
193 b3994ec5 2003-12-11 devnull
194 b3994ec5 2003-12-11 devnull uint textbacknl(Text*, uint, uint);
195 b3994ec5 2003-12-11 devnull uint textbsinsert(Text*, uint, Rune*, uint, int, int*);
196 b3994ec5 2003-12-11 devnull int textbswidth(Text*, Rune);
197 b3994ec5 2003-12-11 devnull int textclickmatch(Text*, int, int, int, uint*);
198 b3994ec5 2003-12-11 devnull void textclose(Text*);
199 b3994ec5 2003-12-11 devnull void textcolumnate(Text*, Dirlist**, int);
200 b3994ec5 2003-12-11 devnull void textcommit(Text*, int);
201 b3994ec5 2003-12-11 devnull void textconstrain(Text*, uint, uint, uint*, uint*);
202 b3994ec5 2003-12-11 devnull void textdelete(Text*, uint, uint, int);
203 b3994ec5 2003-12-11 devnull void textdoubleclick(Text*, uint*, uint*);
204 b3994ec5 2003-12-11 devnull void textfill(Text*);
205 b3994ec5 2003-12-11 devnull void textframescroll(Text*, int);
206 b3994ec5 2003-12-11 devnull void textinit(Text*, File*, Rectangle, Reffont*, Image**);
207 b3994ec5 2003-12-11 devnull void textinsert(Text*, uint, Rune*, uint, int);
208 b3994ec5 2003-12-11 devnull uint textload(Text*, uint, char*, int);
209 b3994ec5 2003-12-11 devnull Rune textreadc(Text*, uint);
210 b3994ec5 2003-12-11 devnull void textredraw(Text*, Rectangle, Font*, Image*, int);
211 b3994ec5 2003-12-11 devnull void textreset(Text*);
212 b3994ec5 2003-12-11 devnull int textresize(Text*, Rectangle);
213 b3994ec5 2003-12-11 devnull void textscrdraw(Text*);
214 b3994ec5 2003-12-11 devnull void textscroll(Text*, int);
215 b3994ec5 2003-12-11 devnull void textselect(Text*);
216 b3994ec5 2003-12-11 devnull int textselect2(Text*, uint*, uint*, Text**);
217 b3994ec5 2003-12-11 devnull int textselect23(Text*, uint*, uint*, Image*, int);
218 b3994ec5 2003-12-11 devnull int textselect3(Text*, uint*, uint*);
219 b3994ec5 2003-12-11 devnull void textsetorigin(Text*, uint, int);
220 b3994ec5 2003-12-11 devnull void textsetselect(Text*, uint, uint);
221 b3994ec5 2003-12-11 devnull void textshow(Text*, uint, uint, int);
222 b3994ec5 2003-12-11 devnull void texttype(Text*, Rune);
223 b3994ec5 2003-12-11 devnull
224 b3994ec5 2003-12-11 devnull struct Window
225 b3994ec5 2003-12-11 devnull {
226 b3994ec5 2003-12-11 devnull QLock lk;
227 b3994ec5 2003-12-11 devnull Ref ref;
228 b3994ec5 2003-12-11 devnull Text tag;
229 b3994ec5 2003-12-11 devnull Text body;
230 b3994ec5 2003-12-11 devnull Rectangle r;
231 b3994ec5 2003-12-11 devnull uchar isdir;
232 b3994ec5 2003-12-11 devnull uchar isscratch;
233 b3994ec5 2003-12-11 devnull uchar filemenu;
234 b3994ec5 2003-12-11 devnull uchar dirty;
235 5a8e63b2 2004-02-29 devnull uchar autoindent;
236 b3994ec5 2003-12-11 devnull int id;
237 b3994ec5 2003-12-11 devnull Range addr;
238 b3994ec5 2003-12-11 devnull Range limit;
239 b3994ec5 2003-12-11 devnull uchar nopen[QMAX];
240 b3994ec5 2003-12-11 devnull uchar nomark;
241 b3994ec5 2003-12-11 devnull uchar noscroll;
242 b3994ec5 2003-12-11 devnull Range wrselrange;
243 b3994ec5 2003-12-11 devnull int rdselfd;
244 b3994ec5 2003-12-11 devnull int neditwrsel;
245 b3994ec5 2003-12-11 devnull Column *col;
246 b3994ec5 2003-12-11 devnull Xfid *eventx;
247 b3994ec5 2003-12-11 devnull char *events;
248 b3994ec5 2003-12-11 devnull int nevents;
249 b3994ec5 2003-12-11 devnull int owner;
250 b3994ec5 2003-12-11 devnull int maxlines;
251 b3994ec5 2003-12-11 devnull Dirlist **dlp;
252 b3994ec5 2003-12-11 devnull int ndl;
253 b3994ec5 2003-12-11 devnull int putseq;
254 b3994ec5 2003-12-11 devnull int nincl;
255 b3994ec5 2003-12-11 devnull Rune **incl;
256 b3994ec5 2003-12-11 devnull Reffont *reffont;
257 b3994ec5 2003-12-11 devnull QLock ctllock;
258 b3994ec5 2003-12-11 devnull uint ctlfid;
259 b3994ec5 2003-12-11 devnull char *dumpstr;
260 b3994ec5 2003-12-11 devnull char *dumpdir;
261 b3994ec5 2003-12-11 devnull int dumpid;
262 b3994ec5 2003-12-11 devnull int utflastqid;
263 b3994ec5 2003-12-11 devnull int utflastboff;
264 b3994ec5 2003-12-11 devnull int utflastq;
265 b3994ec5 2003-12-11 devnull };
266 b3994ec5 2003-12-11 devnull
267 b3994ec5 2003-12-11 devnull void wininit(Window*, Window*, Rectangle);
268 b3994ec5 2003-12-11 devnull void winlock(Window*, int);
269 b3994ec5 2003-12-11 devnull void winlock1(Window*, int);
270 b3994ec5 2003-12-11 devnull void winunlock(Window*);
271 b3994ec5 2003-12-11 devnull void wintype(Window*, Text*, Rune);
272 b3994ec5 2003-12-11 devnull void winundo(Window*, int);
273 b3994ec5 2003-12-11 devnull void winsetname(Window*, Rune*, int);
274 b3994ec5 2003-12-11 devnull void winsettag(Window*);
275 b3994ec5 2003-12-11 devnull void winsettag1(Window*);
276 b3994ec5 2003-12-11 devnull void wincommit(Window*, Text*);
277 b3994ec5 2003-12-11 devnull int winresize(Window*, Rectangle, int);
278 b3994ec5 2003-12-11 devnull void winclose(Window*);
279 b3994ec5 2003-12-11 devnull void windelete(Window*);
280 b3994ec5 2003-12-11 devnull int winclean(Window*, int);
281 b3994ec5 2003-12-11 devnull void windirfree(Window*);
282 b3994ec5 2003-12-11 devnull void winevent(Window*, char*, ...);
283 b3994ec5 2003-12-11 devnull void winmousebut(Window*);
284 b3994ec5 2003-12-11 devnull void winaddincl(Window*, Rune*, int);
285 b3994ec5 2003-12-11 devnull void wincleartag(Window*);
286 b3994ec5 2003-12-11 devnull void winctlprint(Window*, char*, int);
287 b3994ec5 2003-12-11 devnull
288 b3994ec5 2003-12-11 devnull struct Column
289 b3994ec5 2003-12-11 devnull {
290 b3994ec5 2003-12-11 devnull Rectangle r;
291 b3994ec5 2003-12-11 devnull Text tag;
292 b3994ec5 2003-12-11 devnull Row *row;
293 b3994ec5 2003-12-11 devnull Window **w;
294 b3994ec5 2003-12-11 devnull int nw;
295 b3994ec5 2003-12-11 devnull int safe;
296 b3994ec5 2003-12-11 devnull };
297 b3994ec5 2003-12-11 devnull
298 b3994ec5 2003-12-11 devnull void colinit(Column*, Rectangle);
299 b3994ec5 2003-12-11 devnull Window* coladd(Column*, Window*, Window*, int);
300 b3994ec5 2003-12-11 devnull void colclose(Column*, Window*, int);
301 b3994ec5 2003-12-11 devnull void colcloseall(Column*);
302 b3994ec5 2003-12-11 devnull void colresize(Column*, Rectangle);
303 b3994ec5 2003-12-11 devnull Text* colwhich(Column*, Point);
304 b3994ec5 2003-12-11 devnull void coldragwin(Column*, Window*, int);
305 b3994ec5 2003-12-11 devnull void colgrow(Column*, Window*, int);
306 b3994ec5 2003-12-11 devnull int colclean(Column*);
307 b3994ec5 2003-12-11 devnull void colsort(Column*);
308 b3994ec5 2003-12-11 devnull void colmousebut(Column*);
309 b3994ec5 2003-12-11 devnull
310 b3994ec5 2003-12-11 devnull struct Row
311 b3994ec5 2003-12-11 devnull {
312 b3994ec5 2003-12-11 devnull QLock lk;
313 b3994ec5 2003-12-11 devnull Rectangle r;
314 b3994ec5 2003-12-11 devnull Text tag;
315 b3994ec5 2003-12-11 devnull Column **col;
316 b3994ec5 2003-12-11 devnull int ncol;
317 b3994ec5 2003-12-11 devnull
318 b3994ec5 2003-12-11 devnull };
319 b3994ec5 2003-12-11 devnull
320 b3994ec5 2003-12-11 devnull void rowinit(Row*, Rectangle);
321 b3994ec5 2003-12-11 devnull Column* rowadd(Row*, Column *c, int);
322 b3994ec5 2003-12-11 devnull void rowclose(Row*, Column*, int);
323 b3994ec5 2003-12-11 devnull Text* rowwhich(Row*, Point);
324 b3994ec5 2003-12-11 devnull Column* rowwhichcol(Row*, Point);
325 b3994ec5 2003-12-11 devnull void rowresize(Row*, Rectangle);
326 b3994ec5 2003-12-11 devnull Text* rowtype(Row*, Rune, Point);
327 b3994ec5 2003-12-11 devnull void rowdragcol(Row*, Column*, int but);
328 b3994ec5 2003-12-11 devnull int rowclean(Row*);
329 b3994ec5 2003-12-11 devnull void rowdump(Row*, char*);
330 b3994ec5 2003-12-11 devnull void rowload(Row*, char*, int);
331 b3994ec5 2003-12-11 devnull void rowloadfonts(char*);
332 b3994ec5 2003-12-11 devnull
333 b3994ec5 2003-12-11 devnull struct Timer
334 b3994ec5 2003-12-11 devnull {
335 b3994ec5 2003-12-11 devnull int dt;
336 b3994ec5 2003-12-11 devnull int cancel;
337 b3994ec5 2003-12-11 devnull Channel *c; /* chan(int) */
338 b3994ec5 2003-12-11 devnull Timer *next;
339 b3994ec5 2003-12-11 devnull };
340 b3994ec5 2003-12-11 devnull
341 b3994ec5 2003-12-11 devnull struct Command
342 b3994ec5 2003-12-11 devnull {
343 b3994ec5 2003-12-11 devnull int pid;
344 b3994ec5 2003-12-11 devnull Rune *name;
345 b3994ec5 2003-12-11 devnull int nname;
346 b3994ec5 2003-12-11 devnull char *text;
347 b3994ec5 2003-12-11 devnull char **av;
348 b3994ec5 2003-12-11 devnull int iseditcmd;
349 b3994ec5 2003-12-11 devnull Mntdir *md;
350 b3994ec5 2003-12-11 devnull Command *next;
351 b3994ec5 2003-12-11 devnull };
352 b3994ec5 2003-12-11 devnull
353 b3994ec5 2003-12-11 devnull struct Dirtab
354 b3994ec5 2003-12-11 devnull {
355 b3994ec5 2003-12-11 devnull char *name;
356 b3994ec5 2003-12-11 devnull uchar type;
357 b3994ec5 2003-12-11 devnull uint qid;
358 b3994ec5 2003-12-11 devnull uint perm;
359 b3994ec5 2003-12-11 devnull };
360 b3994ec5 2003-12-11 devnull
361 b3994ec5 2003-12-11 devnull struct Mntdir
362 b3994ec5 2003-12-11 devnull {
363 b3994ec5 2003-12-11 devnull int id;
364 b3994ec5 2003-12-11 devnull int ref;
365 b3994ec5 2003-12-11 devnull Rune *dir;
366 b3994ec5 2003-12-11 devnull int ndir;
367 b3994ec5 2003-12-11 devnull Mntdir *next;
368 b3994ec5 2003-12-11 devnull int nincl;
369 b3994ec5 2003-12-11 devnull Rune **incl;
370 b3994ec5 2003-12-11 devnull };
371 b3994ec5 2003-12-11 devnull
372 b3994ec5 2003-12-11 devnull struct Fid
373 b3994ec5 2003-12-11 devnull {
374 b3994ec5 2003-12-11 devnull int fid;
375 b3994ec5 2003-12-11 devnull int busy;
376 b3994ec5 2003-12-11 devnull int open;
377 b3994ec5 2003-12-11 devnull Qid qid;
378 b3994ec5 2003-12-11 devnull Window *w;
379 b3994ec5 2003-12-11 devnull Dirtab *dir;
380 b3994ec5 2003-12-11 devnull Fid *next;
381 b3994ec5 2003-12-11 devnull Mntdir *mntdir;
382 b3994ec5 2003-12-11 devnull int nrpart;
383 b3994ec5 2003-12-11 devnull uchar rpart[UTFmax];
384 b3994ec5 2003-12-11 devnull };
385 b3994ec5 2003-12-11 devnull
386 b3994ec5 2003-12-11 devnull
387 b3994ec5 2003-12-11 devnull struct Xfid
388 b3994ec5 2003-12-11 devnull {
389 b3994ec5 2003-12-11 devnull void *arg; /* args to xfidinit */
390 b3994ec5 2003-12-11 devnull Fcall fcall;
391 b3994ec5 2003-12-11 devnull Xfid *next;
392 b3994ec5 2003-12-11 devnull Channel *c; /* chan(void(*)(Xfid*)) */
393 b3994ec5 2003-12-11 devnull Fid *f;
394 b3994ec5 2003-12-11 devnull uchar *buf;
395 b3994ec5 2003-12-11 devnull int flushed;
396 b3994ec5 2003-12-11 devnull
397 b3994ec5 2003-12-11 devnull };
398 b3994ec5 2003-12-11 devnull
399 b3994ec5 2003-12-11 devnull void xfidctl(void *);
400 b3994ec5 2003-12-11 devnull void xfidflush(Xfid*);
401 b3994ec5 2003-12-11 devnull void xfidopen(Xfid*);
402 b3994ec5 2003-12-11 devnull void xfidclose(Xfid*);
403 b3994ec5 2003-12-11 devnull void xfidread(Xfid*);
404 b3994ec5 2003-12-11 devnull void xfidwrite(Xfid*);
405 b3994ec5 2003-12-11 devnull void xfidctlwrite(Xfid*, Window*);
406 b3994ec5 2003-12-11 devnull void xfideventread(Xfid*, Window*);
407 b3994ec5 2003-12-11 devnull void xfideventwrite(Xfid*, Window*);
408 b3994ec5 2003-12-11 devnull void xfidindexread(Xfid*);
409 b3994ec5 2003-12-11 devnull void xfidutfread(Xfid*, Text*, uint, int);
410 b3994ec5 2003-12-11 devnull int xfidruneread(Xfid*, Text*, uint, uint);
411 b3994ec5 2003-12-11 devnull
412 b3994ec5 2003-12-11 devnull struct Reffont
413 b3994ec5 2003-12-11 devnull {
414 b3994ec5 2003-12-11 devnull Ref ref;
415 b3994ec5 2003-12-11 devnull Font *f;
416 b3994ec5 2003-12-11 devnull
417 b3994ec5 2003-12-11 devnull };
418 b3994ec5 2003-12-11 devnull Reffont *rfget(int, int, int, char*);
419 b3994ec5 2003-12-11 devnull void rfclose(Reffont*);
420 b3994ec5 2003-12-11 devnull
421 b3994ec5 2003-12-11 devnull struct Rangeset
422 b3994ec5 2003-12-11 devnull {
423 b3994ec5 2003-12-11 devnull Range r[NRange];
424 b3994ec5 2003-12-11 devnull };
425 b3994ec5 2003-12-11 devnull
426 b3994ec5 2003-12-11 devnull struct Dirlist
427 b3994ec5 2003-12-11 devnull {
428 b3994ec5 2003-12-11 devnull Rune *r;
429 b3994ec5 2003-12-11 devnull int nr;
430 b3994ec5 2003-12-11 devnull int wid;
431 b3994ec5 2003-12-11 devnull };
432 b3994ec5 2003-12-11 devnull
433 b3994ec5 2003-12-11 devnull struct Expand
434 b3994ec5 2003-12-11 devnull {
435 b3994ec5 2003-12-11 devnull uint q0;
436 b3994ec5 2003-12-11 devnull uint q1;
437 b3994ec5 2003-12-11 devnull Rune *name;
438 b3994ec5 2003-12-11 devnull int nname;
439 b3994ec5 2003-12-11 devnull char *bname;
440 b3994ec5 2003-12-11 devnull int jump;
441 b3994ec5 2003-12-11 devnull union{
442 b3994ec5 2003-12-11 devnull Text *at;
443 b3994ec5 2003-12-11 devnull Rune *ar;
444 b3994ec5 2003-12-11 devnull } u;
445 b3994ec5 2003-12-11 devnull int (*agetc)(void*, uint);
446 b3994ec5 2003-12-11 devnull int a0;
447 b3994ec5 2003-12-11 devnull int a1;
448 b3994ec5 2003-12-11 devnull };
449 b3994ec5 2003-12-11 devnull
450 b3994ec5 2003-12-11 devnull enum
451 b3994ec5 2003-12-11 devnull {
452 b3994ec5 2003-12-11 devnull /* fbufalloc() guarantees room off end of BUFSIZE */
453 b3994ec5 2003-12-11 devnull BUFSIZE = Maxblock+IOHDRSZ, /* size from fbufalloc() */
454 b3994ec5 2003-12-11 devnull RBUFSIZE = BUFSIZE/sizeof(Rune),
455 b3994ec5 2003-12-11 devnull EVENTSIZE = 256,
456 b3994ec5 2003-12-11 devnull Scrollwid = 12, /* width of scroll bar */
457 b3994ec5 2003-12-11 devnull Scrollgap = 4, /* gap right of scroll bar */
458 b3994ec5 2003-12-11 devnull Margin = 4, /* margin around text */
459 b3994ec5 2003-12-11 devnull Border = 2, /* line between rows, cols, windows */
460 b3994ec5 2003-12-11 devnull };
461 b3994ec5 2003-12-11 devnull
462 b3994ec5 2003-12-11 devnull #define QID(w,q) ((w<<8)|(q))
463 b3994ec5 2003-12-11 devnull #define WIN(q) ((((ulong)(q).path)>>8) & 0xFFFFFF)
464 b3994ec5 2003-12-11 devnull #define FILE(q) ((q).path & 0xFF)
465 b3994ec5 2003-12-11 devnull
466 b3994ec5 2003-12-11 devnull enum
467 b3994ec5 2003-12-11 devnull {
468 b3994ec5 2003-12-11 devnull FALSE,
469 b3994ec5 2003-12-11 devnull TRUE,
470 b3994ec5 2003-12-11 devnull XXX,
471 b3994ec5 2003-12-11 devnull };
472 b3994ec5 2003-12-11 devnull
473 b3994ec5 2003-12-11 devnull enum
474 b3994ec5 2003-12-11 devnull {
475 b3994ec5 2003-12-11 devnull Empty = 0,
476 b3994ec5 2003-12-11 devnull Null = '-',
477 b3994ec5 2003-12-11 devnull Delete = 'd',
478 b3994ec5 2003-12-11 devnull Insert = 'i',
479 b3994ec5 2003-12-11 devnull Replace = 'r',
480 b3994ec5 2003-12-11 devnull Filename = 'f',
481 b3994ec5 2003-12-11 devnull };
482 b3994ec5 2003-12-11 devnull
483 b3994ec5 2003-12-11 devnull enum /* editing */
484 b3994ec5 2003-12-11 devnull {
485 b3994ec5 2003-12-11 devnull Inactive = 0,
486 b3994ec5 2003-12-11 devnull Inserting,
487 b3994ec5 2003-12-11 devnull Collecting,
488 b3994ec5 2003-12-11 devnull };
489 b3994ec5 2003-12-11 devnull
490 5a8e63b2 2004-02-29 devnull uint globalincref;
491 b3994ec5 2003-12-11 devnull uint seq;
492 b3994ec5 2003-12-11 devnull uint maxtab; /* size of a tab, in units of the '0' character */
493 b3994ec5 2003-12-11 devnull
494 b3994ec5 2003-12-11 devnull Display *display;
495 b3994ec5 2003-12-11 devnull Image *screen;
496 b3994ec5 2003-12-11 devnull Font *font;
497 b3994ec5 2003-12-11 devnull Mouse *mouse;
498 b3994ec5 2003-12-11 devnull Mousectl *mousectl;
499 b3994ec5 2003-12-11 devnull Keyboardctl *keyboardctl;
500 b3994ec5 2003-12-11 devnull Reffont reffont;
501 b3994ec5 2003-12-11 devnull Image *modbutton;
502 b3994ec5 2003-12-11 devnull Image *colbutton;
503 b3994ec5 2003-12-11 devnull Image *button;
504 b3994ec5 2003-12-11 devnull Image *but2col;
505 b3994ec5 2003-12-11 devnull Image *but3col;
506 b3994ec5 2003-12-11 devnull Cursor boxcursor;
507 b3994ec5 2003-12-11 devnull Row row;
508 b3994ec5 2003-12-11 devnull int timerpid;
509 b3994ec5 2003-12-11 devnull Disk *disk;
510 b3994ec5 2003-12-11 devnull Text *seltext;
511 b3994ec5 2003-12-11 devnull Text *argtext;
512 b3994ec5 2003-12-11 devnull Text *mousetext; /* global because Text.close needs to clear it */
513 b3994ec5 2003-12-11 devnull Text *typetext; /* global because Text.close needs to clear it */
514 b3994ec5 2003-12-11 devnull Text *barttext; /* shared between mousetask and keyboardthread */
515 b3994ec5 2003-12-11 devnull int bartflag;
516 b3994ec5 2003-12-11 devnull Window *activewin;
517 b3994ec5 2003-12-11 devnull Column *activecol;
518 b3994ec5 2003-12-11 devnull Buffer snarfbuf;
519 b3994ec5 2003-12-11 devnull Rectangle nullrect;
520 b3994ec5 2003-12-11 devnull int fsyspid;
521 b3994ec5 2003-12-11 devnull char *cputype;
522 b3994ec5 2003-12-11 devnull char *objtype;
523 b3994ec5 2003-12-11 devnull char *home;
524 b3994ec5 2003-12-11 devnull char *fontnames[2];
525 b3994ec5 2003-12-11 devnull Image *tagcols[NCOL];
526 b3994ec5 2003-12-11 devnull Image *textcols[NCOL];
527 5a8e63b2 2004-02-29 devnull extern char wdir[]; /* must use extern because no dimension given */
528 b3994ec5 2003-12-11 devnull int editing;
529 b3994ec5 2003-12-11 devnull int erroutfd;
530 b3994ec5 2003-12-11 devnull int messagesize; /* negotiated in 9P version setup */
531 5a8e63b2 2004-02-29 devnull int globalautoindent;
532 b3994ec5 2003-12-11 devnull
533 c16f1f73 2004-06-09 devnull enum
534 c16f1f73 2004-06-09 devnull {
535 c16f1f73 2004-06-09 devnull Kscrolloneup = KF|0x20,
536 c16f1f73 2004-06-09 devnull Kscrollonedown = KF|0x21,
537 c16f1f73 2004-06-09 devnull };
538 c16f1f73 2004-06-09 devnull
539 b3994ec5 2003-12-11 devnull Channel *ckeyboard; /* chan(Rune)[10] */
540 b3994ec5 2003-12-11 devnull Channel *cplumb; /* chan(Plumbmsg*) */
541 b3994ec5 2003-12-11 devnull Channel *cwait; /* chan(Waitmsg) */
542 b3994ec5 2003-12-11 devnull Channel *ccommand; /* chan(Command*) */
543 b3994ec5 2003-12-11 devnull Channel *ckill; /* chan(Rune*) */
544 b3994ec5 2003-12-11 devnull Channel *cxfidalloc; /* chan(Xfid*) */
545 b3994ec5 2003-12-11 devnull Channel *cxfidfree; /* chan(Xfid*) */
546 b3994ec5 2003-12-11 devnull Channel *cnewwindow; /* chan(Channel*) */
547 b3994ec5 2003-12-11 devnull Channel *mouseexit0; /* chan(int) */
548 b3994ec5 2003-12-11 devnull Channel *mouseexit1; /* chan(int) */
549 b3994ec5 2003-12-11 devnull Channel *cexit; /* chan(int) */
550 b3994ec5 2003-12-11 devnull Channel *cerr; /* chan(char*) */
551 b3994ec5 2003-12-11 devnull Channel *cedit; /* chan(int) */
552 8ad51794 2004-03-25 devnull Channel *cwarn; /* chan(void*)[1] (really chan(unit)[1]) */
553 b3994ec5 2003-12-11 devnull
554 b3994ec5 2003-12-11 devnull #define STACK 32768