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