1 /* we_main.c */
2 /* Copyright (C) 1993 Fred Kruse */
3 /* This is free software; you can redistribute it and/or */
4 /* modify it under the terms of the */
5 /* GNU General Public License, see the file COPYING. */
6
7 /*
8 Window - Editor (WE)
9 Version 1.0
10 Copyright by F.Kruse */
11
12 /* includes */
13 #include <signal.h>
14 #include "messages.h"
15 #include "edit.h"
16
17 #ifdef UNIX
18 #include <sys/types.h>
19 #include <sys/stat.h>
20 #include "attrb.h"
21 #endif
22
23 #ifdef DJGPP
24 #include <dpmi.h>
25 #endif
26
27 /* externals */
28 extern char *info_file;
29 extern char *e_tmp_dir;
30 extern char *e_hlp_str[];
31
32 extern int col_num;
33
34 extern FARBE *u_fb, *x_fb;
35
36 /* globals */
37 struct CNT *WpeEditor;
38 int fk__cursor = 0;
39
40 WOPT *eblst, *fblst, *mblst, *dblst, *xblst, *wblst, *rblst;
41 WOPT *ablst, *sblst, *hblst, *gblst, *oblst;
42
43 char *e_hlp, *user_shell;
44 WOPT *blst;
45 int nblst = 7;
46
47 #if MOUSE
48 int fk__mouse_stat = 1;
49 struct mouse e_mouse = { 0, 0, 0 };
50 #endif
51
52 /* prototypes */
53 int e_read_help_str(void);
54
55 /* preinitialized arrays */
56 char *e_msg[] = { "Not Enough Memory",
57 "Option-File got the Wrong Version",
58 "Can\'t read Option-File",
59 "More Than 35 Windows",
60 "String NOT found",
61 "Can\'t open File %s", /* Number 5 */
62 "Can\'t close File",
63 "No more Undo",
64 "Execute Command: %s\n",
65 "Command not found",
66 "\nStrike <Return> to continue\n", /* Number 10 */
67 "Not Installed",
68 "Can\'t open Option-File",
69 "Can\'t write to Option-File",
70 "File failed to save",
71 "Not all files saved", /* Number 15 */
72 "Can\'t Print File",
73 "No more Redo",
74 "Can\'t open directory",
75 "Can\'t open HOME directory",
76 "System error", /* Number 20 */
77 "Wastebasket is not available",
78 "Can\'t create directory",
79 "Can\'t access file or directory",
80 "Can\'t remove file or directory",
81 "Can\'t link file or directory", /* Number 25 */
82 "File already exist with \"new.dir\" name",
83 "Cannot change permissions",
84 "Can\'t rename file or directory",
85 "Can\'t open file for reading",
86 "Can\'t open file for writing", /* Number 30 */
87 "Can\'t allocate buffer for copying",
88 "Inconsistent copying"
89 };
90
91 OPT opt[] = { {"#", 3, '#', AltSYS},
92 {"File", 10, 'F', AltF},
93 {"Edit", 19, 'E', AltE},
94 {"Search", 28, 'S', AltS},
95 {"Block", 39, 'B', AltB},
96 {"Options", 49, 'O', AltO},
97 {"Window", 61, 'W', AltW},
98 {"Help", 72, 'H', AltH}
99 #ifdef PROG
100 , {NULL, 0, 0, 0}
101 , {NULL, 0, 0, 0}
102 #endif
103 #ifdef DEBUGGER
104 , {NULL, 0, 0, 0}
105 #endif
106 };
107
108 WOPT eblst_o[] = { {"F1 Help", 0, 0, 2, F1},
109 {"F2 Save", 9, 0, 2, F2},
110 {"F3 Files", 18, 0, 2, F3},
111 {"Alt-F3 Close W.", 28, 0, 6, AF3},
112 {"F4 Search", 45, 0, 2, F4},
113 {"^L S.Again", 56, 0, 2, CF4},
114 {"Alt-X Quit", 68, 0, 5, AltX} };
115
116 WOPT eblst_u[] = { {"F1 Help", 0, 0, 2, F1},
117 {"Alt-F2 Save", 9, 0, 6, AF2},
118 {"F2 Files", 22, 0, 2, F2},
119 {"^F4 Close ", 32, 0, 3, CF4},
120 {"Alt-F3 Srch", 44, 0, 6, AF3},
121 {"F3 S.Ag.", 57, 0, 2, F3},
122 {"Alt-F4 Quit", 67, 0, 6, AF4} };
123
124 WOPT fblst_o[] = { {"F1 Help", 0, 0, 2, F1},
125 {"Edit", 10, 0, 1, AltE},
126 {"Attributes", 17, 0, 1, AltA},
127 {"Move", 29, 0, 1, AltM},
128 {"COpy", 35, 1, 1, AltO},
129 {"Remove", 41, 0, 1, AltR},
130 {"Alt-F3 Close W.", 49, 0, 6, AF3},
131 {"Alt-X Quit", 66, 0, 5, AltX} };
132
133 WOPT fblst_u[] = { {"F1 Help", 0, 0, 2, F1},
134 {"Edit", 9, 0, 1, AltE},
135 {"RePlace", 15, 2, 1, AltP},
136 {"Move", 24, 0, 1, AltM},
137 {"DUplicate", 30, 1, 1, AltU},
138 {"Remove", 41, 0, 1, AltR},
139 {"^F4 Close W.", 49, 0, 3, CF4},
140 {"Alt-F4 Quit", 63, 0, 6, AF4} };
141
142 WOPT mblst_o[] = { {"F1 Help", 0, 0, 2, F1},
143 {"PreV. Err.", 9, 3, 1, AltV},
144 {"NexT Err.", 21, 3, 1, AltT},
145 {"Compile", 32, 0, 1, AltC},
146 {"Make", 41, 0, 1, AltM},
147 {"RUn", 47, 1, 1, AltU},
148 {"Alt-F3 Close", 52, 0, 6, AF3},
149 {"Alt-X Quit", 66, 0, 5, AltX} };
150
151 WOPT mblst_u[] = { {"F1 Help", 0, 0, 2, F1},
152 {"PreV. Err.", 9, 3, 1, AltV},
153 {"NexT Err.", 21, 3, 1, AltT},
154 {"Compile", 32, 0, 1, AltC},
155 {"Make", 41, 0, 1, AltM},
156 {"RUn", 47, 1, 1, AltU},
157 {"^F4 Close", 52, 0, 3, CF4},
158 {"Alt-F4 Quit", 63, 0, 6, AF4} };
159
160 WOPT dblst_o[] = { {"F1 Help", 0, 0, 2, F1},
161 {"^F7 Make Watch", 9, 0, 3, CF7},
162 {"F7 Trace", 25, 0, 2, F7},
163 {"F8 Step", 34, 0, 2, F8},
164 {"^F10 Run", 43, 0, 4, F10},
165 {"Alt-F3 Close", 53, 0, 6, AF3},
166 {"Alt-X Quit", 67, 0, 5, AltX} };
167
168 WOPT dblst_u[] = { {"F1 Help", 0, 0, 2, F1},
169 {"^F5 Make Watch", 9, 0, 3, CF7},
170 {"F7 Trace", 25, 0, 2, F7},
171 {"F8 Step", 34, 0, 2, F8},
172 {"^F10 Run", 43, 0, 4, F10},
173 {"^F4 Close", 53, 0, 3, CF4},
174 {"Alt-F4 Quit", 64, 0, 6, AF4} };
175
176 WOPT xblst_o[] = { {"F1 Help", 0, 0, 2, F1},
177 {"Execute", 19, 0, 1, AltE},
178 {"Alt-F3 Close W.", 38, 0, 6, AF3},
179 {"Alt-X Quit", 66, 0, 5, AltX} };
180
181 WOPT xblst_u[] = { {"F1 Help", 0, 0, 2, F1},
182 {"Execute", 19, 0, 1, AltE},
183 {"^F4 Close W.", 38, 0, 3, CF4},
184 {"Alt-F4 Quit", 63, 0, 6, AF4} };
185
186 WOPT wblst_o[] = { {"F1 Help", 0, 0, 2, F1},
187 {"Write", 19, 0, 1, AltW},
188 {"Alt-F3 Close W.", 38, 0, 6, AF3},
189 {"Alt-X Quit", 66, 0, 5, AltX} };
190
191 WOPT wblst_u[] = { {"F1 Help", 0, 0, 2, F1},
192 {"Write", 19, 0, 1, AltW},
193 {"^F4 Close W.", 38, 0, 3, CF4},
194 {"Alt-F4 Quit", 63, 0, 6, AF4} };
195
196 WOPT rblst_o[] = { {"F1 Help", 0, 0, 2, F1},
197 {"Read", 19, 0, 1, AltR},
198 {"Alt-F3 Close W.", 38, 0, 6, AF3},
199 {"Alt-X Quit", 66, 0, 5, AltX} };
200
201 WOPT rblst_u[] = { {"F1 Help", 0, 0, 2, F1},
202 {"Read", 19, 0, 1, AltR},
203 {"^F4 Close W.", 38, 0, 3, CF4},
204 {"Alt-F4 Quit", 63, 0, 6, AF4} };
205
206 WOPT ablst_o[] = { {"F1 Help", 0, 0, 2, F1},
207 {"Add", 19, 0, 1, AltA},
208 {"Alt-F3 Close W.", 38, 0, 6, AF3},
209 {"Alt-X Quit", 66, 0, 5, AltX} };
210
211 WOPT ablst_u[] = { {"F1 Help", 0, 0, 2, F1},
212 {"Add", 19, 0, 1, AltA},
213 {"^F4 Close W.", 38, 0, 3, CF4},
214 {"Alt-F4 Quit", 63, 0, 6, AF4} };
215
216 WOPT sblst_o[] = { {"F1 Help", 0, 0, 2, F1},
217 {"Save", 14, 0, 1, AltS},
218 {"Change Dir", 25, 0, 1, AltC},
219 {"Alt-F3 Close W.", 42, 0, 6, AF3},
220 {"Alt-X Quit", 66, 0, 5, AltX} };
221
222 WOPT sblst_u[] = { {"F1 Help", 0, 0, 2, F1},
223 {"Save", 14, 0, 1, AltS},
224 {"Change Dir", 25, 0, 1, AltC},
225 {"^F4 Close W.", 42, 0, 3, CF4},
226 {"Alt-F4 Quit", 66, 0, 6, AF4} };
227
228 WOPT hblst_o[] = { {"F1 Help", 0, 0, 2, F1},
229 {"<BSP> Back", 9, 0, 5, WPE_DC},
230 {"<CR> Goto", 21, 0, 4, WPE_CR},
231 {" PreVious", 32, 4, 1, AltV},
232 {" NexT", 45, 4, 1, AltT},
233 {"Alt-F3 Close", 54, 0, 6, AF3},
234 {"Alt-X Quit", 68, 0, 5, AltX} };
235
236 WOPT hblst_u[] = { {"F1 Help", 0, 0, 2, F1},
237 {"<BSP> Back", 9, 0, 5, WPE_DC},
238 {"<CR> Goto", 21, 0, 4, WPE_CR},
239 {" PreVious", 32, 4, 1, AltV},
240 {" NexT", 45, 4, 1, AltT},
241 {"^F4 Close", 54, 0, 3, CF4},
242 {"Alt-F4 Quit", 65, 0, 6, AF4} };
243
244 WOPT gblst_o[] = { {"F1 Help", 0, 0, 2, F1},
245 {"Show", 19, 0, 1, AltS},
246 {"Alt-F3 Close W.", 38, 0, 6, AF3},
247 {"Alt-X Quit", 66, 0, 5, AltX} };
248
249 WOPT gblst_u[] = { {"F1 Help", 0, 0, 2, F1},
250 {"Show", 19, 0, 1, AltS},
251 {"^F4 Close W.", 38, 0, 3, CF4},
252 {"Alt-F4 Quit", 63, 0, 6, AF4} };
253
254 WOPT oblst_o[] = { {"F1 Help", 0, 0, 2, F1},
255 {"Add", 14, 0, 1, AltA},
256 {"Delete", 25, 0, 1, AltD},
257 {"Alt-F3 Close W.", 42, 0, 6, AF3},
258 {"Alt-X Quit", 66, 0, 5, AltX} };
259
260 WOPT oblst_u[] = { {"F1 Help", 0, 0, 2, F1},
261 {"Add", 14, 0, 1, AltA},
262 {"Delete", 25, 0, 1, AltD},
263 {"^F4 Close W.", 42, 0, 3, CF4},
264 {"Alt-F4 Quit", 63, 0, 6, AF4} };
265
ECNT_Init(ECNT * cn)266 void ECNT_Init(ECNT *cn)
267 {
268 cn->mxedt = -1;
269 cn->curedt = 0;
270 cn->edt[0] = 0;
271 cn->fb = NULL;
272 cn->print_cmd = WpeStrdup(PRNTCMD);
273
274 cn->dirct = WpeGetCurrentDir(cn);
275
276 strcpy(cn->fd.search, "");
277 strcpy(cn->fd.replace, "");
278 strcpy(cn->fd.file, SUDIR);
279 cn->fd.dirct = WpeStrdup(cn->dirct);
280
281 cn->fd.sw = 16;
282 cn->fd.sn = 0;
283 cn->fd.rn = 0;
284
285 cn->sdf = cn->rdf = cn->fdf = cn->ddf = cn->wdf = cn->hdf = cn->shdf = NULL;
286
287 /* standard adjustments */
288 cn->dtmd = DTMD_NORMAL;
289 cn->autosv = 0;
290 cn->maxchg = 999;
291 cn->numundo = 10;
292 cn->maxcol = MAXCOLUM;
293 cn->tabn = 8;
294 cn->autoindent = 3;
295 cn->tabs = MALLOC((cn->tabn+1)*sizeof(char));
296 WpeStringBlank(cn->tabs, cn->tabn);
297 cn->flopt = FM_REKURSIVE_ACTIONS | FM_REMOVE_INTO_WB | FM_MOVE_PROMPT |
298 FM_MOVE_PROMPT | FM_PROMPT_DELETE;
299 cn->edopt = ED_SOURCE_AUTO_INDENT | ED_ERRORS_STOP_AT | ED_SYNTAX_HIGHLIGHT;
300 }
301
main(int argc,char ** argv)302 int main(int argc, char **argv)
303 {
304 FARBE *fb;
305 ECNT *cn;
306 int i, err = 0, g[4];
307 int so = 0, sd = 1;
308 char *tp;
309
310 if ((cn = (ECNT *)MALLOC(sizeof(ECNT))) == NULL)
311 e_error(e_msg[ERR_LOWMEM], 2, fb);
312 ECNT_Init(cn);
313 e_ini_unix(&argc, argv);
314 e_switch_screen(1);
315 fb = e_ini_farbe();
316 WpeEditor = cn;
317 cn->fb = fb;
318
319 info_file = MALLOC((strlen(INFO_DIR)+1)*sizeof(char));
320 strcpy(info_file, INFO_DIR);
321 e_read_help_str();
322 e_hlp = e_hlp_str[0];
323 if (!(user_shell = getenv("SHELL"))) user_shell = DEF_SHELL;
324 #ifdef HAVE_MKDTEMP
325 e_tmp_dir = strdup("/tmp/xwpe_XXXXXX");
326 if (mkdtemp(e_tmp_dir) == NULL)
327 #else
328 #if defined(HAVE_TEMPNAM)
329 e_tmp_dir = tempnam(NULL, "xwpe_");
330 #else
331 e_tmp_dir = MALLOC(128);
332 sprintf(e_tmp_dir, "/tmp/we_%u", (unsigned) getpid());
333 e_tmp_dir = REALLOC(e_tmp_dir, (strlen(e_tmp_dir)+1)*sizeof(char));
334 #endif
335 if ((e_tmp_dir == NULL) || (mkdir(e_tmp_dir, 0700) != 0))
336 #endif
337 {
338 perror("Xwpe: ");
339 return 1;
340 }
341
342 for (i = 1; i < argc; i++)
343 {
344 if (*argv[i] == '-')
345 {
346 if (*(argv[i]+1) == 's' && *(argv[i]+2) == 'o') so = 1;
347 else if (*(argv[i]+1) == 's' && *(argv[i]+2) == 'f')
348 {
349 sd = 0;
350 cn->optfile = MALLOC((strlen(argv[i+1])+1)*sizeof(char));
351 strcpy(cn->optfile, argv[i+1]);
352 }
353 }
354 }
355 #ifdef PROG
356 e_ini_prog(cn);
357 #endif
358 if (sd != 0)
359 {
360 FILE *f = fopen(OPTION_FILE, "r");
361 if (f)
362 {
363 fclose(f);
364 cn->optfile = e_mkfilename(cn->dirct, OPTION_FILE);
365 }
366 else
367 {
368 cn->optfile = e_mkfilename(getenv("HOME"), XWPE_HOME);
369 cn->optfile = REALLOC(cn->optfile,
370 strlen(cn->optfile) + strlen(OPTION_FILE) + 2);
371 strcat(cn->optfile, DIRS);
372 strcat(cn->optfile, OPTION_FILE);
373 }
374 }
375 if (so == 0) err = e_opt_read(cn);
376 e_edit(cn, ""); /* Clipboard (must first read option file) */
377 if ((tp = getenv("INFOPATH")) != NULL)
378 {
379 if (info_file) FREE(info_file);
380 info_file = WpeStrdup(tp);
381 }
382 if (cn->edopt & ED_CUA_STYLE) blst = eblst_u;
383 else blst = eblst_o;
384 e_ini_desk(cn);
385 cn->f[0]->blst = eblst;
386 #if MOUSE
387 g[0] = 4; g[2] = 0; g[3] = 0;
388 fk_mouse(g);
389 g[0] = 1;
390 fk_mouse(g);
391 #endif
392 /* this error comes from reading the options file */
393 if (err > 0) e_error(e_msg[err], 0, cn->fb);
394 if (WpeIsProg()) WpeSyntaxReadFile(cn);
395 #ifdef UNIX
396 for (i = 1; i < argc; i++)
397 if (!strcmp(argv[i], "-r")) e_recover(cn);
398 #endif
399 for (i = 1; i < argc; i++)
400 {
401 if (*argv[i] == '-')
402 {
403 if (*(argv[i]+1) == 's' && *(argv[i]+2) == 'f') i++;
404 #if defined(UNIX) && defined(PROG)
405 else if (*(argv[i]+1) == 'p' && *(argv[i]+2) == 'm') e_we_sw |= 8;
406 #endif
407 continue;
408 }
409 else e_edit(cn, argv[i]);
410 }
411 if (cn->mxedt == 0) WpeManager(cn->f[cn->mxedt]);
412 do
413 {
414 if (cn->f[cn->mxedt]->dtmd == DTMD_FILEMANAGER) i = WpeHandleFileManager(cn);
415 else if (cn->f[cn->mxedt]->dtmd == DTMD_DATA) i = e_data_eingabe(cn);
416 else i = e_eingabe(cn);
417 if (i == AltX) i = e_quit(cn->f[cn->mxedt]);
418 }
419 while (i != AltX);
420 WpeExit(0);
421 return 0;
422 }
423
e_switch_blst(ECNT * cn)424 int e_switch_blst(ECNT *cn)
425 {
426 int i;
427 FENSTER *f;
428
429 if (cn->edopt & ED_CUA_STYLE)
430 {
431 for (i = 0; i <= cn->mxedt; i++)
432 {
433 f = cn->f[i];
434 if (f->blst == eblst_o) f->blst = eblst_u;
435 else if (f->blst == fblst_o) f->blst= fblst_u;
436 else if (f->blst == mblst_o) f->blst= mblst_u;
437 else if (f->blst == dblst_o) f->blst= dblst_u;
438 else if (f->blst == xblst_o) f->blst= xblst_u;
439 else if (f->blst == wblst_o) f->blst= wblst_u;
440 else if (f->blst == rblst_o) f->blst= rblst_u;
441 else if (f->blst == ablst_o) f->blst= ablst_u;
442 else if (f->blst == sblst_o) f->blst= sblst_u;
443 else if (f->blst == hblst_o) f->blst= hblst_u;
444 else if (f->blst == gblst_o) f->blst= gblst_u;
445 else if (f->blst == oblst_o) f->blst= oblst_u;
446 }
447 }
448 else
449 {
450 for(i = 0; i <= cn->mxedt; i++)
451 {
452 f = cn->f[i];
453 if (f->blst == eblst_u) f->blst= eblst_o;
454 else if (f->blst == fblst_u) f->blst= fblst_o;
455 else if (f->blst == mblst_u) f->blst= mblst_o;
456 else if (f->blst == dblst_u) f->blst= dblst_o;
457 else if (f->blst == xblst_u) f->blst= xblst_o;
458 else if (f->blst == wblst_u) f->blst= wblst_o;
459 else if (f->blst == rblst_u) f->blst= rblst_o;
460 else if (f->blst == ablst_u) f->blst= ablst_o;
461 else if (f->blst == sblst_u) f->blst= sblst_o;
462 else if (f->blst == hblst_u) f->blst= hblst_o;
463 else if (f->blst == gblst_u) f->blst= gblst_o;
464 else if (f->blst == oblst_u) f->blst= oblst_o;
465 }
466 }
467 return(0);
468 }
469
e_ini_desk(ECNT * cn)470 void e_ini_desk(ECNT *cn)
471 {
472 extern int e_mn_men;
473 int i;
474
475 if (cn->edopt & ED_CUA_STYLE)
476 {
477 eblst = eblst_u; fblst = fblst_u; mblst = mblst_u; dblst = dblst_u;
478 xblst = xblst_u; wblst = wblst_u; rblst = rblst_u; ablst = ablst_u;
479 sblst = sblst_u; hblst = hblst_u; gblst = gblst_u; oblst = oblst_u;
480 }
481 else
482 {
483 eblst = eblst_o; fblst = fblst_o; mblst = mblst_o; dblst = dblst_o;
484 xblst = xblst_o; wblst = wblst_o; rblst = rblst_o; ablst = ablst_o;
485 sblst = sblst_o; hblst = hblst_o; gblst = gblst_o; oblst = oblst_o;
486 }
487 e_cls(cn->fb->df.fb, cn->fb->dc);
488 e_blk(MAXSCOL, 0, 0, cn->fb->mt.fb);
489
490 /* put out the main menu */
491 for (i = 0; i < MENOPT; ++i)
492 {
493 e_pr_str_wsd(opt[i].x, 0, opt[i].t, cn->fb->mt.fb, 0, 1, cn->fb->ms.fb,
494 ( i == 0 ? 0 : opt[i].x-e_mn_men),
495 (i == MENOPT-1) ? MAXSCOL-1 : opt[i+1].x-e_mn_men-1);
496 }
497
498 e_pr_uul(cn->fb);
499 }
500
FARBE_Init(FARBE * fb)501 void FARBE_Init(FARBE *fb)
502 {
503 fb->er = e_s_x_clr(15,4); /* Editor Frames */
504 fb->et = e_s_x_clr(11,4); /* Editor Text */
505 fb->ez = e_s_x_clr(4,7); /* Editors Text highlighted */
506 fb->es = e_s_x_clr(10,4); /* Editors Window-Button */
507 fb->ek = e_s_x_clr(11,6); /* Editors highlighted (find) */
508 fb->em = e_s_x_clr(4,6); /* Mouse slider bar */
509 fb->mr = e_s_x_clr(0,7); /* Menu Frame */
510 fb->mt = e_s_x_clr(0,7); /* Menu Text */
511 fb->mz = e_s_x_clr(0,2); /* Menu Text highlighted */
512 fb->ms = e_s_x_clr(1,7); /* Menu-Switch */
513 fb->nr = e_s_x_clr(15,7); /* Options Frame */
514 fb->nt = e_s_x_clr(0,7); /* Options Text */
515 fb->nsnt = e_s_x_clr(11,7);/* Options Text-Switch */
516 fb->ne = e_s_x_clr(1, 7); /* Options Window-Button */
517 fb->fr = e_s_x_clr(15,4); /* Editor Control Bar (?) (Schreibleiste) passive */
518 fb->fa = e_s_x_clr(15,2); /* Editor Control Bar (?) (Schreibleiste) active */
519 fb->ft = e_s_x_clr(0,6); /* Data Text */
520 fb->fz = e_s_x_clr(15,2); /* Data active highlighted */
521 fb->frft = e_s_x_clr(15,6);/* Data passive highlighted */
522 fb->fs = e_s_x_clr(0,6); /* Switch Text */
523 fb->nsft = e_s_x_clr(14,6);/* Switch Switch */
524 fb->fsm = e_s_x_clr(14,6); /* Switch active */
525 fb->nz = e_s_x_clr(15,2); /* Button Text */
526 fb->ns = e_s_x_clr(11,2); /* Button Switch */
527 fb->nm = e_s_x_clr(11,2); /* Button Text highlighted */
528 fb->hh = e_s_x_clr(12,6); /* Help Header */
529 fb->hb = e_s_x_clr(11,2); /* Help Button */
530 fb->hm = e_s_x_clr(10,4); /* Help highlighted */
531 fb->df = e_s_x_clr(7,0); /* Background */
532 fb->of = e_s_x_clr(8,0); /* void (unused) */
533 fb->db = e_s_x_clr(0,1); /* Breakpoint */
534 fb->dy = e_s_x_clr(12,6); /* Debugger Stop */
535 fb->ct = e_s_x_clr(11, 4); /* C-Prog. Text */
536 fb->cr = e_s_x_clr(15, 4); /* C-Prog. res. Words */
537 fb->ck = e_s_x_clr(14, 4); /* C-Prog. Constants */
538 fb->cp = e_s_x_clr(10, 4); /* C-Prog. Pre-processor */
539 fb->cc = e_s_x_clr( 7, 4); /* C-Prog. Comments */
540 fb->dc = ' ';
541 fb->ws = 7;
542 }
543
e_ini_farbe()544 FARBE *e_ini_farbe()
545 {
546 if (WpeIsXwin())
547 {
548 if (!x_fb)
549 x_fb = WpeMalloc(sizeof(FARBE));
550 FARBE_Init(x_fb);
551 return x_fb;
552 }
553 else
554 {
555 if (!u_fb)
556 u_fb = WpeMalloc(sizeof(FARBE));
557 if (col_num)
558 {
559 FARBE_Init(u_fb);
560 }
561 else
562 {
563 u_fb->er = e_n_t_clr(0);
564 u_fb->et = e_n_t_clr(0);
565 u_fb->ez = e_n_t_clr(A_REVERSE);
566 u_fb->es = e_n_t_clr(0);
567 u_fb->ek = e_n_t_clr(A_UNDERLINE);
568 u_fb->em = e_n_t_clr(A_STANDOUT);
569 u_fb->mr = e_n_t_clr(A_STANDOUT);
570 u_fb->mt = e_n_t_clr(A_STANDOUT);
571 u_fb->mz = e_n_t_clr(0);
572 u_fb->ms = e_n_t_clr(0);
573 u_fb->nr = e_n_t_clr(A_STANDOUT);
574 u_fb->nt = e_n_t_clr(A_REVERSE);
575 u_fb->nsnt = e_n_t_clr(A_BOLD);
576 u_fb->ne = e_n_t_clr(0);
577 u_fb->fr = e_n_t_clr(0);
578 u_fb->fa = e_n_t_clr(A_REVERSE);
579 u_fb->ft = e_n_t_clr(0);
580 u_fb->fz = e_n_t_clr(A_STANDOUT);
581 u_fb->frft = e_n_t_clr(0);
582 u_fb->fs = e_n_t_clr(0);
583 u_fb->nsft = e_n_t_clr(A_BOLD);
584 u_fb->fsm = e_n_t_clr(A_BOLD);
585 u_fb->nz = e_n_t_clr(0);
586 u_fb->ns = e_n_t_clr(A_BOLD);
587 u_fb->nm = e_n_t_clr(A_BOLD);
588 u_fb->hh = e_n_t_clr(A_REVERSE);
589 u_fb->hb = e_n_t_clr(A_REVERSE);
590 u_fb->hm = e_n_t_clr(A_BOLD);
591 u_fb->of = e_n_t_clr(A_STANDOUT);
592 u_fb->df = e_n_t_clr(0);
593 u_fb->db = e_n_t_clr(A_STANDOUT);
594 u_fb->dy = e_n_t_clr(A_STANDOUT);
595 u_fb->ct = e_n_t_clr(0);
596 u_fb->cr = e_n_t_clr(0);
597 u_fb->ck = e_n_t_clr(0);
598 u_fb->cp = e_n_t_clr(0);
599 u_fb->cc = e_n_t_clr(0);
600 u_fb->dc = 0x20;
601 u_fb->ws = 0;
602 }
603 return u_fb;
604 }
605 }
606
e_free_find(FIND * fd)607 void e_free_find(FIND *fd)
608 {
609 if (fd->dirct)
610 {
611 free(fd->dirct);
612 fd->dirct = NULL;
613 }
614 }
615
616