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