root/foundation-apps/mxterm-maxx/xterm.h

Revision 8, 46.9 KB (checked in by emasson, 3 years ago)

initial import for the community edition

Line 
1/* $XTermId: xterm.h,v 1.501 2008/04/20 20:30:55 tom Exp $ */
2
3/************************************************************
4
5Copyright 1999-2007,2008 by Thomas E. Dickey
6
7                        All Rights Reserved
8
9Permission is hereby granted, free of charge, to any person obtaining a
10copy of this software and associated documentation files (the
11"Software"), to deal in the Software without restriction, including
12without limitation the rights to use, copy, modify, merge, publish,
13distribute, sublicense, and/or sell copies of the Software, and to
14permit persons to whom the Software is furnished to do so, subject to
15the following conditions:
16
17The above copyright notice and this permission notice shall be included
18in all copies or substantial portions of the Software.
19
20THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
24CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27
28Except as contained in this notice, the name(s) of the above copyright
29holders shall not be used in advertising or otherwise to promote the
30sale, use or other dealings in this Software without prior written
31authorization.
32
33********************************************************/
34
35/*
36 * Common/useful definitions for XTERM application.
37 *
38 * This is also where we put the fallback definitions if we do not build using
39 * the configure script.
40 */
41#ifndef included_xterm_h
42#define included_xterm_h
43
44#ifdef HAVE_CONFIG_H
45#include <xtermcfg.h>
46#endif
47
48#ifndef GCC_UNUSED
49#define GCC_UNUSED              /* nothing */
50#endif
51
52#ifndef GCC_NORETURN
53#define GCC_NORETURN            /* nothing */
54#endif
55
56#include <X11/Xos.h>
57
58#ifndef HAVE_CONFIG_H
59
60#define HAVE_LIB_XAW 1
61
62#ifdef CSRG_BASED
63/* Get definition of BSD */
64#include <sys/param.h>
65#endif
66
67#ifndef DFT_TERMTYPE
68#define DFT_TERMTYPE "xterm"
69#endif
70
71#ifndef X_NOT_POSIX
72#define HAVE_WAITPID 1
73#define HAVE_SYS_WAIT_H 1
74#define HAVE_UNISTD_H 1
75#endif
76
77#define HAVE_STDLIB_H 1
78
79#if defined(sun)
80/* errno is declared in <errno.h> */
81#else
82#define DECL_ERRNO 1
83#endif
84
85#undef DECL_PTSNAME             /* ptsname() is normally in stdlib.h */
86
87#ifndef NOPUTENV
88#define HAVE_PUTENV 1
89#endif
90
91#if defined(CSRG_BASED) || defined(__GNU__)
92#define USE_POSIX_TERMIOS 1
93#endif
94
95#ifdef __NetBSD__
96#if __NetBSD_Version__ >= 106030000     /* 1.6C */
97#define BSD_UTMPX 1
98#define ut_xtime ut_tv.tv_sec
99#endif
100#endif
101
102#if defined(hpux) && !defined(__hpux)
103#define __hpux 1                /* HPUX 11.0 does not define this */
104#endif
105
106#if !defined(__SCO__) && (defined(SCO) || defined(sco) || defined(SCO325))
107#define __SCO__ 1
108#endif
109
110#ifdef USE_POSIX_TERMIOS
111#define HAVE_TERMIOS_H 1
112#define HAVE_TCGETATTR 1
113#endif
114
115#if defined(__UNIXOS2__) || defined(__SCO__) || defined(__UNIXWARE__)
116#define USE_TERMCAP 1
117#endif
118
119#if defined(UTMP)
120#define HAVE_UTMP 1
121#endif
122
123#if (defined(__MVS__) || defined(SVR4) || defined(__SCO__) || defined(BSD_UTMPX)) && !defined(__CYGWIN__)
124#define UTMPX_FOR_UTMP 1
125#endif
126
127#if !defined(ISC) && !defined(__QNX__)
128#define HAVE_UTMP_UT_HOST 1
129#endif
130
131#if defined(UTMPX_FOR_UTMP) && !(defined(__MVS__) || defined(__hpux))
132#define HAVE_UTMP_UT_SESSION 1
133#endif
134
135#if !(defined(linux) && (!defined(__GLIBC__) || (__GLIBC__ < 2))) && !defined(SVR4)
136#define ut_xstatus ut_exit.e_exit
137#endif
138
139#if defined(SVR4) || defined(__SCO__) || defined(BSD_UTMPX) || (defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0)))
140#define HAVE_UTMP_UT_XTIME 1
141#endif
142
143#if defined(linux) || defined(__CYGWIN__)
144#define USE_LASTLOG
145#define HAVE_LASTLOG_H
146#define USE_STRUCT_LASTLOG
147#elif defined(BSD) && (BSD >= 199103)
148#ifdef BSD_UTMPX
149#define USE_LASTLOGX
150#else
151#define USE_LASTLOG
152#define USE_STRUCT_LASTLOG
153#endif
154#endif
155
156#if defined(__OpenBSD__)
157#define DEFDELETE_DEL True
158#define DEF_BACKARO_ERASE True
159#define DEF_INITIAL_ERASE True
160#endif
161
162#if defined(__SCO__) || defined(__UNIXWARE__)
163#define DEFDELETE_DEL True
164#define OPT_SCO_FUNC_KEYS 1
165#endif
166
167#if defined(__SCO__) || defined(SVR4) || defined(_POSIX_SOURCE) || defined(__QNX__) || defined(__hpux) || (defined(BSD) && (BSD >= 199103)) || defined(__CYGWIN__)
168#define USE_POSIX_WAIT
169#endif
170
171#if defined(AIXV3) || defined(CRAY) || defined(__SCO__) || defined(SVR4) || (defined(SYSV) && defined(i386)) || defined(__MVS__) || defined(__hpux) || defined(__osf__) || defined(linux) || defined(macII) || defined(BSD_UTMPX)
172#define USE_SYSV_UTMP
173#endif
174
175#if defined(__GNU__) || defined(__MVS__) || defined(__osf__)
176#define USE_TTY_GROUP
177#endif
178
179#if defined(__CYGWIN__)
180#define HAVE_NCURSES_TERM_H 1
181#endif
182
183#ifdef __osf__
184#define TTY_GROUP_NAME "terminal"
185#endif
186
187#if defined(__MVS__)
188#undef ut_xstatus
189#define ut_name ut_user
190#define ut_xstatus ut_exit.ut_e_exit
191#define ut_xtime ut_tv.tv_sec
192#endif
193
194#if defined(ut_xstatus)
195#define HAVE_UTMP_UT_XSTATUS 1
196#endif
197
198#if defined(XKB)
199#define HAVE_XKB_BELL_EXT 1
200#endif
201
202#if (defined(SVR4) && !defined(__CYGWIN__)) || defined(linux) || (defined(BSD) && (BSD >= 199103))
203#define HAVE_POSIX_SAVED_IDS
204#endif
205
206#endif /* HAVE_CONFIG_H */
207
208#ifndef HAVE_X11_DECKEYSYM_H
209#define HAVE_X11_DECKEYSYM_H 1
210#endif
211
212#ifndef HAVE_X11_SUNKEYSYM_H
213#define HAVE_X11_SUNKEYSYM_H 1
214#endif
215
216#ifndef HAVE_X11_XF86KEYSYM_H
217#define HAVE_X11_XF86KEYSYM_H 0
218#endif
219
220/***====================================================================***/
221
222/* if compiling with gcc -ansi -pedantic, we must fix POSIX definitions */
223#if defined(SVR4) && defined(sun)
224#ifndef __EXTENSIONS__
225#define __EXTENSIONS__ 1
226#endif
227#ifndef _POSIX_C_SOURCE
228#define _POSIX_C_SOURCE 1
229#endif
230#endif
231
232/***====================================================================***/
233
234#ifdef HAVE_STDLIB_H
235#include <stdlib.h>
236#else
237extern char *calloc();
238extern char *getenv();
239extern char *malloc();
240extern char *realloc();
241extern void exit();
242extern void free();
243#endif
244
245#ifdef HAVE_UNISTD_H
246#include <unistd.h>
247#endif
248
249#ifdef HAVE_SYS_WAIT_H
250#include <sys/wait.h>
251#endif
252
253#include <errno.h>
254#if defined(DECL_ERRNO) && !defined(errno)
255extern int errno;
256#endif
257
258/*
259 * FIXME:  Toggling logging from xterm hangs under Linux 2.0.29 with libc5 if
260 * we use 'waitpid()', while 'wait()' seems to work properly.
261 */
262#ifdef linux
263#undef HAVE_WAITPID
264#endif
265
266#ifndef OPT_WIDE_CHARS
267#define OPT_WIDE_CHARS 0
268#endif
269
270#if OPT_WIDE_CHARS
271#define HIDDEN_HI 0xff
272#define HIDDEN_LO 0xff
273#define HIDDEN_CHAR 0xffff
274#endif
275
276/***====================================================================***/
277
278#include <proto.h>
279#include <ptyx.h>
280
281#if (XtSpecificationRelease >= 6) && !defined(NO_XPOLL_H) && !defined(sun)
282#include <X11/Xpoll.h>
283#define USE_XPOLL_H 1
284#else
285#define Select(n,r,w,e,t) select(n,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval *)t)
286#define XFD_COPYSET(src,dst) memcpy((dst)->fds_bits, (src)->fds_bits, sizeof(fd_set))
287#if defined(__MVS__) && !defined(TIME_WITH_SYS_TIME)
288#define TIME_WITH_SYS_TIME
289#endif
290#endif
291
292#ifdef TIME_WITH_SYS_TIME
293# include <sys/time.h>
294# include <time.h>
295#else
296# ifdef HAVE_SYS_TIME_H
297include <sys/time.h>
298# else
299include <time.h>
300# endif
301#endif
302
303/* these may be needed for sig_atomic_t */
304#include <sys/types.h>
305#include <signal.h>
306
307#ifdef USE_SYS_SELECT_H
308
309#if defined(USE_XPOLL_H) && defined(AIXV3) && defined(NFDBITS)
310#undef NFDBITS                  /* conflict between X11/Xpoll.h and sys/select.h */
311#endif
312
313#include <sys/select.h>
314
315#endif /* USE_SYS_SELECT_H */
316
317#include <setjmp.h>
318
319#if defined(__UNIXOS2__) && !defined(XTERM_MAIN)
320#define environ gblenvp         /* circumvent a bug */
321#endif
322
323#if !defined(VMS) && !(defined(linux) && defined(__USE_GNU)) && !defined(__hpux) && !defined(_ALL_SOURCE) && !defined(__osf__)
324extern char **environ;
325#endif
326
327#define XK_Fn(n)        (XK_F1 + (n) - 1)
328
329#define Maybe           2
330
331/***====================================================================***/
332
333#define XtNallowC1Printable     "allowC1Printable"
334#define XtNallowSendEvents      "allowSendEvents"
335#define XtNallowTitleOps        "allowTitleOps"
336#define XtNallowWindowOps       "allowWindowOps"
337#define XtNaltIsNotMeta         "altIsNotMeta"
338#define XtNaltSendsEscape       "altSendsEscape"
339#define XtNalwaysBoldMode       "alwaysBoldMode"
340#define XtNalwaysHighlight      "alwaysHighlight"
341#define XtNalwaysUseMods        "alwaysUseMods"
342#define XtNanswerbackString     "answerbackString"
343#define XtNappcursorDefault     "appcursorDefault"
344#define XtNappkeypadDefault     "appkeypadDefault"
345#define XtNautoWrap             "autoWrap"
346#define XtNawaitInput           "awaitInput"
347#define XtNbackarrowKey         "backarrowKey"
348#define XtNbellIsUrgent         "bellIsUrgent"
349#define XtNbellOnReset          "bellOnReset"
350#define XtNbellSuppressTime     "bellSuppressTime"
351#define XtNboldColors           "boldColors"
352#define XtNboldFont             "boldFont"
353#define XtNboldMode             "boldMode"
354#define XtNbrokenLinuxOSC       "brokenLinuxOSC"
355#define XtNbrokenSelections     "brokenSelections"
356#define XtNbrokenStringTerm     "brokenStringTerm"
357#define XtNc132                 "c132"
358#define XtNcacheDoublesize      "cacheDoublesize"
359#define XtNcharClass            "charClass"
360#define XtNcjkWidth             "cjkWidth"
361#define XtNcolorAttrMode        "colorAttrMode"
362#define XtNcolorBDMode          "colorBDMode"
363#define XtNcolorBLMode          "colorBLMode"
364#define XtNcolorMode            "colorMode"
365#define XtNcolorRVMode          "colorRVMode"
366#define XtNcolorULMode          "colorULMode"
367#define XtNcombiningChars       "combiningChars"
368#define XtNctrlFKeys            "ctrlFKeys"
369#define XtNcurses               "curses"
370#define XtNcursorBlink          "cursorBlink"
371#define XtNcursorColor          "cursorColor"
372#define XtNcursorOffTime        "cursorOffTime"
373#define XtNcursorOnTime         "cursorOnTime"
374#define XtNcutNewline           "cutNewline"
375#define XtNcutToBeginningOfLine "cutToBeginningOfLine"
376#define XtNdecTerminalID        "decTerminalID"
377#define XtNdeleteIsDEL          "deleteIsDEL"
378#define XtNdynamicColors        "dynamicColors"
379#define XtNeightBitControl      "eightBitControl"
380#define XtNeightBitInput        "eightBitInput"
381#define XtNeightBitOutput       "eightBitOutput"
382#define XtNfaceName             "faceName"
383#define XtNfaceNameDoublesize   "faceNameDoublesize"
384#define XtNfaceSize             "faceSize"
385#define XtNfont1                "font1"
386#define XtNfont2                "font2"
387#define XtNfont3                "font3"
388#define XtNfont4                "font4"
389#define XtNfont5                "font5"
390#define XtNfont6                "font6"
391#define XtNfontDoublesize       "fontDoublesize"
392#define XtNfontStyle            "fontStyle"
393#define XtNforceBoxChars        "forceBoxChars"
394#define XtNformatOtherKeys      "formatOtherKeys"
395#define XtNfreeBoldBox          "freeBoldBox"
396#define XtNhighlightColor       "highlightColor"
397#define XtNhighlightColorMode   "highlightColorMode"
398#define XtNhighlightReverse     "highlightReverse"
399#define XtNhighlightSelection   "highlightSelection"
400#define XtNhighlightTextColor   "highlightTextColor"
401#define XtNhpLowerleftBugCompat "hpLowerleftBugCompat"
402#define XtNi18nSelections       "i18nSelections"
403#define XtNinitialFont          "initialFont"
404#define XtNinternalBorder       "internalBorder"
405#define XtNitalicULMode         "italicULMode"
406#define XtNjumpScroll           "jumpScroll"
407#define XtNkeepSelection        "keepSelection"
408#define XtNkeyboardDialect      "keyboardDialect"
409#define XtNlimitResize          "limitResize"
410#define XtNlocale               "locale"
411#define XtNlocaleFilter         "localeFilter"
412#define XtNlogFile              "logFile"
413#define XtNlogInhibit           "logInhibit"
414#define XtNlogging              "logging"
415#define XtNloginShell           "loginShell"
416#define XtNmarginBell           "marginBell"
417#define XtNmenuBar              "menuBar"
418#define XtNmenuHeight           "menuHeight"
419#define XtNmetaSendsEscape      "metaSendsEscape"
420#define XtNmkSamplePass         "mkSamplePass"
421#define XtNmkSampleSize         "mkSampleSize"
422#define XtNmkWidth              "mkWidth"
423#define XtNmodifyCursorKeys     "modifyCursorKeys"
424#define XtNmodifyFunctionKeys   "modifyFunctionKeys"
425#define XtNmodifyKeypadKeys     "modifyKeypadKeys"
426#define XtNmodifyOtherKeys      "modifyOtherKeys"
427#define XtNmodifyStringKeys     "modifyStringKeys"
428#define XtNmultiClickTime       "multiClickTime"
429#define XtNmultiScroll          "multiScroll"
430#define XtNnMarginBell          "nMarginBell"
431#define XtNnumLock              "numLock"
432#define XtNoldXtermFKeys        "oldXtermFKeys"
433#define XtNpointerColor         "pointerColor"
434#define XtNpointerColorBackground "pointerColorBackground"
435#define XtNpointerMode          "pointerMode"
436#define XtNpointerShape         "pointerShape"
437#define XtNpopOnBell            "popOnBell"
438#define XtNprintAttributes      "printAttributes"
439#define XtNprinterAutoClose     "printerAutoClose"
440#define XtNprinterCommand       "printerCommand"
441#define XtNprinterControlMode   "printerControlMode"
442#define XtNprinterExtent        "printerExtent"
443#define XtNprinterFormFeed      "printerFormFeed"
444#define XtNquietGrab            "quietGrab"
445#define XtNrenderFont           "renderFont"
446#define XtNresizeGravity        "resizeGravity"
447#define XtNreverseWrap          "reverseWrap"
448#define XtNrightScrollBar       "rightScrollBar"
449#define XtNsaveLines            "saveLines"
450#define XtNscrollBar            "scrollBar"
451#define XtNscrollBarBorder      "scrollBarBorder"
452#define XtNscrollKey            "scrollKey"
453#define XtNscrollLines          "scrollLines"
454#define XtNscrollPos            "scrollPos"
455#define XtNscrollTtyOutput      "scrollTtyOutput"
456#define XtNselectToClipboard    "selectToClipboard"
457#define XtNshiftFonts           "shiftFonts"
458#define XtNshowBlinkAsBold      "showBlinkAsBold"
459#define XtNshowMissingGlyphs    "showMissingGlyphs"
460#define XtNsignalInhibit        "signalInhibit"
461#define XtNtekGeometry          "tekGeometry"
462#define XtNtekInhibit           "tekInhibit"
463#define XtNtekSmall             "tekSmall"
464#define XtNtekStartup           "tekStartup"
465#define XtNtiXtraScroll         "tiXtraScroll"
466#define XtNtiteInhibit          "titeInhibit"
467#define XtNtoolBar              "toolBar"
468#define XtNtrimSelection        "trimSelection"
469#define XtNunderLine            "underLine"
470#define XtNuseClipping          "useClipping"
471#define XtNutf8                 "utf8"
472#define XtNutf8Latin1           "utf8Latin1"
473#define XtNutf8Title            "utf8Title"
474#define XtNveryBoldColors       "veryBoldColors"
475#define XtNvisualBell           "visualBell"
476#define XtNvisualBellDelay      "visualBellDelay"
477#define XtNvt100Graphics        "vt100Graphics"
478#define XtNwideBoldFont         "wideBoldFont"
479#define XtNwideChars            "wideChars"
480#define XtNwideFont             "wideFont"
481#define XtNximFont              "ximFont"
482#define XtNxmcAttributes        "xmcAttributes"
483#define XtNxmcGlitch            "xmcGlitch"
484#define XtNxmcInline            "xmcInline"
485#define XtNxmcMoveSGR           "xmcMoveSGR"
486
487#define XtCAllowC1Printable     "AllowC1Printable"
488#define XtCAllowSendEvents      "AllowSendEvents"
489#define XtCAllowTitleOps        "AllowTitleOps"
490#define XtCAllowWindowOps       "AllowWindowOps"
491#define XtCAltIsNotMeta         "AltIsNotMeta"
492#define XtCAltSendsEscape       "AltSendsEscape"
493#define XtCAlwaysBoldMode       "AlwaysBoldMode"
494#define XtCAlwaysHighlight      "AlwaysHighlight"
495#define XtCAlwaysUseMods        "AlwaysUseMods"
496#define XtCAnswerbackString     "AnswerbackString"
497#define XtCAppcursorDefault     "AppcursorDefault"
498#define XtCAppkeypadDefault     "AppkeypadDefault"
499#define XtCAutoWrap             "AutoWrap"
500#define XtCAwaitInput           "AwaitInput"
501#define XtCBackarrowKey         "BackarrowKey"
502#define XtCBellIsUrgent         "BellIsUrgent"
503#define XtCBellOnReset          "BellOnReset"
504#define XtCBellSuppressTime     "BellSuppressTime"
505#define XtCBoldFont             "BoldFont"
506#define XtCBoldMode             "BoldMode"
507#define XtCBrokenLinuxOSC       "BrokenLinuxOSC"
508#define XtCBrokenSelections     "BrokenSelections"
509#define XtCBrokenStringTerm     "BrokenStringTerm"
510#define XtCC132                 "C132"
511#define XtCCacheDoublesize      "CacheDoublesize"
512#define XtCCharClass            "CharClass"
513#define XtCCjkWidth             "CjkWidth"
514#define XtCColorAttrMode        "ColorAttrMode"
515#define XtCColorMode            "ColorMode"
516#define XtCColumn               "Column"
517#define XtCCombiningChars       "CombiningChars"
518#define XtCCtrlFKeys            "CtrlFKeys"
519#define XtCCurses               "Curses"
520#define XtCCursorBlink          "CursorBlink"
521#define XtCCursorOffTime        "CursorOffTime"
522#define XtCCursorOnTime         "CursorOnTime"
523#define XtCCutNewline           "CutNewline"
524#define XtCCutToBeginningOfLine "CutToBeginningOfLine"
525#define XtCDecTerminalID        "DecTerminalID"
526#define XtCDeleteIsDEL          "DeleteIsDEL"
527#define XtCDynamicColors        "DynamicColors"
528#define XtCEightBitControl      "EightBitControl"
529#define XtCEightBitInput        "EightBitInput"
530#define XtCEightBitOutput       "EightBitOutput"
531#define XtCFaceName             "FaceName"
532#define XtCFaceNameDoublesize   "FaceNameDoublesize"
533#define XtCFaceSize             "FaceSize"
534#define XtCFont1                "Font1"
535#define XtCFont2                "Font2"
536#define XtCFont3                "Font3"
537#define XtCFont4                "Font4"
538#define XtCFont5                "Font5"
539#define XtCFont6                "Font6"
540#define XtCFontDoublesize       "FontDoublesize"
541#define XtCFontStyle            "FontStyle"
542#define XtCForceBoxChars        "ForceBoxChars"
543#define XtCFormatOtherKeys      "FormatOtherKeys"
544#define XtCFreeBoldBox          "FreeBoldBox"
545#define XtCHighlightColorMode   "HighlightColorMode"
546#define XtCHighlightReverse     "HighlightReverse"
547#define XtCHighlightSelection   "HighlightSelection"
548#define XtCHpLowerleftBugCompat "HpLowerleftBugCompat"
549#define XtCI18nSelections       "I18nSelections"
550#define XtCInitialFont          "InitialFont"
551#define XtCJumpScroll           "JumpScroll"
552#define XtCKeepSelection        "KeepSelection"
553#define XtCKeyboardDialect      "KeyboardDialect"
554#define XtCLimitResize          "LimitResize"
555#define XtCLocale               "Locale"
556#define XtCLocaleFilter         "LocaleFilter"
557#define XtCLogInhibit           "LogInhibit"
558#define XtCLogfile              "Logfile"
559#define XtCLogging              "Logging"
560#define XtCLoginShell           "LoginShell"
561#define XtCMarginBell           "MarginBell"
562#define XtCMenuBar              "MenuBar"
563#define XtCMenuHeight           "MenuHeight"
564#define XtCMetaSendsEscape      "MetaSendsEscape"
565#define XtCMkSamplePass         "MkSamplePass"
566#define XtCMkSampleSize         "MkSampleSize"
567#define XtCMkWidth              "MkWidth"
568#define XtCModifyCursorKeys     "ModifyCursorKeys"
569#define XtCModifyFunctionKeys   "ModifyFunctionKeys"
570#define XtCModifyKeypadKeys     "ModifyKeypadKeys"
571#define XtCModifyOtherKeys      "ModifyOtherKeys"
572#define XtCModifyStringKeys     "ModifyStringKeys"
573#define XtCMultiClickTime       "MultiClickTime"
574#define XtCMultiScroll          "MultiScroll"
575#define XtCNumLock              "NumLock"
576#define XtCOldXtermFKeys        "OldXtermFKeys"
577#define XtCPointerMode          "PointerMode"
578#define XtCPopOnBell            "PopOnBell"
579#define XtCPrintAttributes      "PrintAttributes"
580#define XtCPrinterAutoClose     "PrinterAutoClose"
581#define XtCPrinterCommand       "PrinterCommand"
582#define XtCPrinterControlMode   "PrinterControlMode"
583#define XtCPrinterExtent        "PrinterExtent"
584#define XtCPrinterFormFeed      "PrinterFormFeed"
585#define XtCQuietGrab            "QuietGrab"
586#define XtCRenderFont           "RenderFont"
587#define XtCResizeGravity        "ResizeGravity"
588#define XtCReverseWrap          "ReverseWrap"
589#define XtCRightScrollBar       "RightScrollBar"
590#define XtCSaveLines            "SaveLines"
591#define XtCScrollBar            "ScrollBar"
592#define XtCScrollBarBorder      "ScrollBarBorder"
593#define XtCScrollCond           "ScrollCond"
594#define XtCScrollLines          "ScrollLines"
595#define XtCScrollPos            "ScrollPos"
596#define XtCSelectToClipboard    "SelectToClipboard"
597#define XtCShiftFonts           "ShiftFonts"
598#define XtCShowBlinkAsBold      "ShowBlinkAsBold"
599#define XtCShowMissingGlyphs    "ShowMissingGlyphs"
600#define XtCSignalInhibit        "SignalInhibit"
601#define XtCTekInhibit           "TekInhibit"
602#define XtCTekSmall             "TekSmall"
603#define XtCTekStartup           "TekStartup"
604#define XtCTiXtraScroll         "TiXtraScroll"
605#define XtCTiteInhibit          "TiteInhibit"
606#define XtCToolBar              "ToolBar"
607#define XtCTrimSelection        "TrimSelection"
608#define XtCUnderLine            "UnderLine"
609#define XtCUseClipping          "UseClipping"
610#define XtCUtf8                 "Utf8"
611#define XtCUtf8Latin1           "Utf8Latin1"
612#define XtCUtf8Title            "Utf8Title"
613#define XtCVT100Graphics        "VT100Graphics"
614#define XtCVeryBoldColors       "VeryBoldColors"
615#define XtCVisualBell           "VisualBell"
616#define XtCVisualBellDelay      "VisualBellDelay"
617#define XtCWideBoldFont         "WideBoldFont"
618#define XtCWideChars            "WideChars"
619#define XtCWideFont             "WideFont"
620#define XtCXimFont              "XimFont"
621#define XtCXmcAttributes        "XmcAttributes"
622#define XtCXmcGlitch            "XmcGlitch"
623#define XtCXmcInline            "XmcInline"
624#define XtCXmcMoveSGR           "XmcMoveSGR"
625
626#if defined(NO_ACTIVE_ICON) && !defined(XtNgeometry)
627#define XtNgeometry             "geometry"
628#define XtCGeometry             "Geometry"
629#endif
630
631#if OPT_COLOR_CLASS
632#define XtCCursorColor          "CursorColor"
633#define XtCPointerColor         "PointerColor"
634#define XtCHighlightColor       "HighlightColor"
635#define XtCHighlightTextColor   "HighlightTextColor"
636#else
637#define XtCCursorColor          XtCForeground
638#define XtCPointerColor         XtCForeground
639#define XtCHighlightColor       XtCForeground
640#define XtCHighlightTextColor   XtCBackground
641#endif
642
643/***====================================================================***/
644
645#ifdef __cplusplus
646extern "C" {
647#endif
648
649struct XTERM_RESOURCE;
650
651/* Tekproc.c */
652#if OPT_TEK4014
653extern int TekGetFontSize (const char * /* param */);
654extern int TekInit (void);
655extern int TekPtyData(void);
656extern void ChangeTekColors (TekWidget /* tw */, TScreen * /* screen */, ScrnColors * /* pNew */);
657extern void HandleGINInput             PROTO_XT_ACTIONS_ARGS;
658extern void TCursorToggle (TekWidget /* tw */, int /* toggle */);
659extern void TekCopy (TekWidget /* tw */);
660extern void TekEnqMouse (TekWidget /* tw */, int /* c */);
661extern void TekExpose (Widget  /* w */, XEvent * /* event */, Region  /* region */);
662extern void TekGINoff (TekWidget /* tw */);
663extern void TekRefresh (TekWidget /* tw */);
664extern void TekRepaint (TekWidget /* xw */);
665extern void TekReverseVideo (TekWidget /* tw */);
666extern void TekRun (void);
667extern void TekSetFontSize (TekWidget /* tw */, int  /* newitem */);
668extern void TekSimulatePageButton (TekWidget /* tw */, Bool /* reset */);
669#endif
670
671/* button.c */
672#define MotionOff( s, t ) {                                             \
673            (s)->event_mask |= ButtonMotionMask;                        \
674            (s)->event_mask &= ~PointerMotionMask;                      \
675            XSelectInput(XtDisplay((t)), XtWindow((t)), (long) (s)->event_mask); }
676
677#define MotionOn( s, t ) {                                              \
678            (s)->event_mask &= ~ButtonMotionMask;                       \
679            (s)->event_mask |= PointerMotionMask;                       \
680            XSelectInput(XtDisplay((t)), XtWindow((t)), (long) (s)->event_mask); }
681
682extern Bool SendMousePosition (XtermWidget  /* w */, XEvent*  /* event */);
683extern void DiredButton                PROTO_XT_ACTIONS_ARGS;
684extern void DisownSelection (XtermWidget  /* termw */);
685extern void UnhiliteSelection (XtermWidget  /* termw */);
686extern void HandleInsertSelection      PROTO_XT_ACTIONS_ARGS;
687extern void HandleKeyboardSelectEnd    PROTO_XT_ACTIONS_ARGS;
688extern void HandleKeyboardSelectExtend PROTO_XT_ACTIONS_ARGS;
689extern void HandleKeyboardSelectStart  PROTO_XT_ACTIONS_ARGS;
690extern void HandleKeyboardStartExtend  PROTO_XT_ACTIONS_ARGS;
691extern void HandleSelectEnd            PROTO_XT_ACTIONS_ARGS;
692extern void HandleSelectExtend         PROTO_XT_ACTIONS_ARGS;
693extern void HandleSelectSet            PROTO_XT_ACTIONS_ARGS;
694extern void HandleSelectStart          PROTO_XT_ACTIONS_ARGS;
695extern void HandleStartExtend          PROTO_XT_ACTIONS_ARGS;
696extern void ResizeSelection (TScreen * /* screen */, int  /* rows */, int  /* cols */);
697extern void ScrollSelection (TScreen * /* screen */, int  /* amount */,  Bool /* always */);
698extern void TrackMouse (XtermWidget /* xw */, int /* func */, CELL *  /* start */, int  /* firstrow */, int  /* lastrow */);
699extern void ViButton                   PROTO_XT_ACTIONS_ARGS;
700
701#if OPT_DEC_LOCATOR
702extern void GetLocatorPosition (XtermWidget  /* w */);
703extern void InitLocatorFilter (XtermWidget  /* w */);
704#endif  /* OPT_DEC_LOCATOR */
705
706#if OPT_FOCUS_EVENT
707extern void SendFocusButton(XtermWidget /* xw */, XFocusChangeEvent * /* event */);
708#else
709#define SendFocusBotton(xw, event) /* nothing */
710#endif
711
712#if OPT_PASTE64
713extern void AppendToSelectionBuffer (TScreen * /* screen */, unsigned  /* c */);
714extern void ClearSelectionBuffer (TScreen * /* screen */);
715extern void CompleteSelection (XtermWidget  /* xw */, char ** /* args */, Cardinal  /* len */);
716extern void xtermGetSelection (Widget  /* w */, Time  /* ev_time */, String * /* params */, Cardinal  /* num_params */, Atom * /* targets */);
717#endif
718
719#if OPT_READLINE
720extern void ReadLineButton             PROTO_XT_ACTIONS_ARGS;
721#endif
722
723#if OPT_WIDE_CHARS
724extern Bool iswide(int  /* i */);
725#endif
726
727/* cachedCgs.c */
728extern CgsEnum getCgsId(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/);
729extern GC freeCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/);
730extern GC getCgsGC(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/);
731extern Pixel getCgsBack(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/);
732extern Pixel getCgsFore(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/);
733extern XTermFonts * getCgsFont(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/);
734extern void clrCgsFonts(XtermWidget /*xw*/, VTwin * /*cgsWin*/, XTermFonts * /*font*/);
735extern void copyCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*dstCgsId*/, CgsEnum /*srcCgsId*/);
736extern void redoCgs(XtermWidget /*xw*/, Pixel /*fg*/, Pixel /*bg*/, CgsEnum /*cgsId*/);
737extern void setCgsBack(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, Pixel /*bg*/);
738extern void setCgsCSet(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, unsigned /*cset*/);
739extern void setCgsFont(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, XTermFonts * /*font*/);
740extern void setCgsFore(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, Pixel /*fg*/);
741extern void swapCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*dstCgsId*/, CgsEnum /*srcCgsId*/);
742
743#ifdef NO_LEAKS
744extern void noleaks_cachedCgs (XtermWidget /* xw */);
745#endif
746
747/* charproc.c */
748extern Bool CheckBufPtrs (TScreen * /* screen */);
749extern int VTInit (void);
750extern int v_write (int  /* f */, Char * /* d */, unsigned  /* len */);
751extern void FindFontSelection (XtermWidget /* xw */, const char * /* atom_name */, Bool  /* justprobe */);
752extern void HideCursor (void);
753extern void ShowCursor (void);
754extern void SwitchBufPtrs (TScreen * /* screen */);
755extern void ToggleAlternate (XtermWidget /* xw */);
756extern void VTReset (XtermWidget /* xw */, int /* full */, int /* saved */);
757extern void VTRun (void);
758extern void dotext (XtermWidget /* xw */, int  /* charset */, IChar * /* buf */, Cardinal  /* len */);
759extern void releaseCursorGCs(XtermWidget /*xw*/);
760extern void releaseWindowGCs(XtermWidget /*xw*/, VTwin * /*win*/);
761extern void resetCharsets (TScreen * /* screen */);
762extern void set_cursor_gcs (XtermWidget /* xw */);
763extern void set_max_col(TScreen *  /* screen */, int  /* cols */);
764extern void set_max_row(TScreen *  /* screen */, int  /* rows */);
765extern void set_tb_margins (TScreen * /* screen */, int  /* top */, int  /* bottom */);
766extern void unparse_end (XtermWidget /* xw */);
767extern void unparseputc (XtermWidget /* xw */, int  /* c */);
768extern void unparseputc1 (XtermWidget /* xw */, int  /* c */);
769extern void unparseputn (XtermWidget /* xw */, unsigned /* n */);
770extern void unparseputs (XtermWidget /* xw */, char * /* s */);
771extern void unparseseq (XtermWidget /* xw */, ANSI * /* ap */);
772extern void xtermAddInput(Widget  /* w */);
773
774#if OPT_BLINK_CURS
775extern void ToggleCursorBlink(TScreen * /* screen */);
776#endif
777
778#if OPT_ISO_COLORS
779extern void SGR_Background (XtermWidget /* xw */, int  /* color */);
780extern void SGR_Foreground (XtermWidget /* xw */, int  /* color */);
781#endif
782
783#ifdef NO_LEAKS
784extern void noleaks_charproc (void);
785#endif
786
787/* charsets.c */
788extern unsigned xtermCharSetIn (unsigned  /* code */, int  /* charset */);
789extern int xtermCharSetOut (IChar * /* buf */, IChar * /* ptr */, int  /* charset */);
790
791/* cursor.c */
792extern void AdjustSavedCursor (XtermWidget /* xw */, int /* adjust */);
793extern void CarriageReturn (TScreen * /* screen */);
794extern void CursorBack (XtermWidget /* xw */, int   /* n */);
795extern void CursorDown (TScreen * /* screen */, int   /* n */);
796extern void CursorForward (TScreen * /* screen */, int   /* n */);
797extern void CursorNextLine (TScreen * /* screen */, int  /* count */);
798extern void CursorPrevLine (TScreen * /* screen */, int  /* count */);
799extern void CursorRestore (XtermWidget  /* xw */);
800extern void CursorSave (XtermWidget  /* xw */);
801extern void CursorSet (TScreen * /* screen */, int  /* row */, int  /* col */, unsigned  /* flags */);
802extern void CursorUp (TScreen * /* screen */, int   /* n */);
803extern void RevIndex (XtermWidget /* xw */, int  /* amount */);
804extern void xtermIndex (XtermWidget /* xw */, int  /* amount */);
805
806#if OPT_TRACE
807extern int set_cur_col(TScreen * /* screen */, int  /* value */);
808extern int set_cur_row(TScreen * /* screen */, int  /* value */);
809#else
810#define set_cur_col(screen, value) screen->cur_col = value
811#define set_cur_row(screen, value) screen->cur_row = value
812#endif
813
814/* doublechr.c */
815extern void xterm_DECDHL (XtermWidget /* xw */, Bool  /* top */);
816extern void xterm_DECSWL (XtermWidget /* xw */);
817extern void xterm_DECDWL (XtermWidget /* xw */);
818#if OPT_DEC_CHRSET
819extern int xterm_Double_index(XtermWidget /* xw */, unsigned  /* chrset */, unsigned  /* flags */);
820extern GC xterm_DoubleGC(XtermWidget /* xw */, unsigned  /* chrset */, unsigned  /* flags */, GC  /* old_gc */, int * /* inxp */);
821#endif
822
823/* input.c */
824extern int xtermParamToState (XtermWidget /* xw */, unsigned /* param */);
825extern int xtermStateToParam (XtermWidget /* xw */, unsigned /* state */);
826extern Bool xtermDeleteIsDEL (XtermWidget /* xw */);
827extern void Input (XtermWidget /* xw */, XKeyEvent */* event */, Bool /* eightbit */);
828extern void StringInput (XtermWidget /* xw */, Char * /* string */, size_t  /* nbytes */);
829
830#if OPT_NUM_LOCK
831extern void VTInitModifiers(XtermWidget /* xw */);
832#endif
833
834/* main.c */
835#ifndef __UNIXOS2__
836#define ENVP_ARG /**/
837#else
838#define ENVP_ARG , char ** /* envp */
839#endif
840
841extern int main (int  /* argc */, char ** /* argv */ ENVP_ARG);
842extern int GetBytesAvailable (int  /* fd */);
843extern int kill_process_group (int  /* pid */, int  /* sig */);
844extern int nonblocking_wait (void);
845
846#if OPT_PTY_HANDSHAKE
847extern void first_map_occurred (void);
848#else
849#define first_map_occurred() /* nothing */
850#endif
851
852#ifdef SIGNAL_T
853extern SIGNAL_T Exit (int  /* n */);
854#endif
855
856#ifndef SIG_ATOMIC_T
857#define SIG_ATOMIC_T int
858#endif
859
860#if OPT_WIDE_CHARS
861extern int (*my_wcwidth)(wchar_t);
862#endif
863
864/* menu.c */
865extern void do_hangup          PROTO_XT_CALLBACK_ARGS;
866extern void repairSizeHints    (void);
867extern void show_8bit_control  (Bool  /* value */);
868
869/* misc.c */
870extern Bool AllocateTermColor(XtermWidget, ScrnColors *, int, const char *);
871extern Cursor make_colored_cursor (unsigned /* cursorindex */, unsigned long  /* fg */, unsigned long  /* bg */);
872extern OptionHelp * sortedOpts(OptionHelp *, XrmOptionDescRec *, Cardinal);
873extern Window WMFrameWindow(XtermWidget /* termw */);
874extern XrmOptionDescRec * sortedOptDescs(XrmOptionDescRec *, Cardinal);
875extern char *udk_lookup (int /* keycode */, int * /* len */);
876extern char *xtermEnvEncoding (void);
877extern char *xtermEnvLocale (void);
878extern char *xtermFindShell(char * /* leaf */, Bool  /* warning */);
879extern char *xtermVersion(void);
880extern const char *SysErrorMsg (int /* n */);
881extern const char *SysReasonMsg (int /* n */);
882extern int XStrCmp (char * /* s1 */, char * /* s2 */);
883extern int creat_as (uid_t  /* uid */, gid_t  /* gid */, Bool  /* append */, char * /* pathname */, int  /* mode */);
884extern int open_userfile (uid_t  /* uid */, gid_t  /* gid */, char * /* path */, Bool  /* append */);
885extern int xerror (Display * /* d */, XErrorEvent * /* ev */);
886extern int xioerror (Display * /* dpy */);
887extern int xtermResetIds(TScreen *  /* screen */);
888extern void Bell (Atom  /* which */, int  /* percent */);
889extern void ChangeIconName (char * /* name */);
890extern void ChangeTitle (char * /* name */);
891extern void ChangeXprop (char * /* name */);
892extern void Cleanup (int  /* code */);
893extern void HandleBellPropertyChange   PROTO_XT_EV_HANDLER_ARGS;
894extern void HandleEightBitKeyPressed   PROTO_XT_ACTIONS_ARGS;
895extern void HandleEnterWindow          PROTO_XT_EV_HANDLER_ARGS;
896extern void HandleFocusChange          PROTO_XT_EV_HANDLER_ARGS;
897extern void HandleInterpret            PROTO_XT_ACTIONS_ARGS;
898extern void HandleKeyPressed           PROTO_XT_ACTIONS_ARGS;
899extern void HandleLeaveWindow          PROTO_XT_EV_HANDLER_ARGS;
900extern void HandleSpawnTerminal        PROTO_XT_ACTIONS_ARGS;
901extern void HandleStringEvent          PROTO_XT_ACTIONS_ARGS;
902extern void Panic (char * /* s */, int  /* a */);
903extern void Redraw (void);
904extern void ReverseOldColors (void);
905extern void SysError (int  /* i */) GCC_NORETURN;
906extern void VisualBell (void);
907extern void do_dcs (XtermWidget /* xw */, Char * /* buf */, size_t  /* len */);
908extern void do_osc (XtermWidget /* xw */, Char * /* buf */, unsigned  /* len */, int  /* final */);
909extern void do_xevents (void);
910extern void end_tek_mode (void);
911extern void end_vt_mode (void);
912extern void hide_tek_window (void);
913extern void hide_vt_window (void);
914extern void reset_decudk (void);
915extern void set_tek_visibility (Bool  /* on */);
916extern void set_vt_visibility (Bool  /* on */);
917extern void switch_modes (Bool  /* tovt */);
918extern void timestamp_filename(char * /* dst */, const char * /* src */);
919extern void xevents (void);
920extern void xt_error (String  /* message */);
921extern void xtermCopyEnv (char ** /* oldenv */);
922extern void xtermDisplayCursor (XtermWidget /* xw */);
923extern void xtermSetenv (char * /* var */, char * /* value */);
924extern void xtermShowPointer (XtermWidget /* xw */, Bool /* enable */);
925
926#if OPT_DABBREV
927extern void HandleDabbrevExpand        PROTO_XT_ACTIONS_ARGS;
928#endif
929
930#if OPT_MAXIMIZE
931extern int QueryMaximize (XtermWidget  /* termw */, unsigned * /* width */, unsigned * /* height */);
932extern void HandleDeIconify            PROTO_XT_ACTIONS_ARGS;
933extern void HandleIconify              PROTO_XT_ACTIONS_ARGS;
934extern void HandleMaximize             PROTO_XT_ACTIONS_ARGS;
935extern void HandleRestoreSize          PROTO_XT_ACTIONS_ARGS;
936extern void RequestMaximize (XtermWidget  /* termw */, int  /* maximize */);
937#endif
938
939#if OPT_WIDE_CHARS
940extern Bool xtermEnvUTF8(void);
941#else
942#define xtermEnvUTF8() False
943#endif
944
945#ifdef ALLOWLOGGING
946extern void StartLog (TScreen * /* screen */);
947extern void CloseLog (TScreen * /* screen */);
948extern void FlushLog (TScreen * /* screen */);
949#else
950#define FlushLog(screen) /*nothing*/
951#endif
952
953/* print.c */
954extern Bool xtermHasPrinter (void);
955extern int xtermPrinterControl (int  /* chr */);
956extern void setPrinterControlMode (int  /* mode */);
957extern void xtermAutoPrint (unsigned  /* chr */);
958extern void xtermMediaControl (int  /* param */, int  /* private_seq */);
959extern void xtermPrintScreen (Bool  /* use_DECPEX */);
960
961/* ptydata.c */
962#ifdef VMS
963#define PtySelect int
964#else
965#define PtySelect fd_set
966#endif
967
968extern Bool decodeUtf8 (PtyData * /* data */);
969extern int readPtyData (TScreen * /* screen */, PtySelect * /* select_mask */, PtyData * /* data */);
970extern void fillPtyData (TScreen * /* screen */, PtyData * /* data */, char * /* value */, int  /* length */);
971extern void initPtyData (PtyData ** /* data */);
972extern void trimPtyData (TScreen * /* screen */, PtyData * /* data */);
973
974#ifdef NO_LEAKS
975extern void noleaks_ptydata ( void );
976#endif
977
978#if OPT_WIDE_CHARS
979extern Bool morePtyData (TScreen * /* screen */, PtyData * /* data */);
980extern Char *convertToUTF8 (Char * /* lp */, unsigned  /* c */);
981extern IChar nextPtyData (TScreen * /* screen */, PtyData * /* data */);
982extern IChar skipPtyData (PtyData * /* data */);
983extern PtyData * fakePtyData(PtyData * /* result */, Char * /* next */, Char * /* last */);
984extern void switchPtyData (TScreen * /* screen */, int  /* f */);
985extern void writePtyData (int  /* f */, IChar * /* d */, unsigned  /* len */);
986#else
987#define morePtyData(screen, data) ((data)->last > (data)->next)
988#define nextPtyData(screen, data) (*((data)->next++) & \
989                                        (screen->output_eight_bits \
990                                        ? 0xff \
991                                        : 0x7f))
992#define writePtyData(f,d,len) v_write(f,d,len)
993#endif
994
995/* screen.c */
996extern Bool non_blank_line (TScreen */* screen */, int  /* row */, int  /* col */, int  /* len */);
997extern ScrnBuf Allocate (int  /* nrow */, int  /* ncol */, Char ** /* addr */);
998extern int ScreenResize (XtermWidget /* xw */, int  /* width */, int  /* height */, unsigned * /* flags */);
999extern size_t ScrnPointers (TScreen * /* screen */, size_t  /* len */);
1000extern void ClearBufRows (XtermWidget /* xw */, int  /* first */, int  /* last */);
1001extern void ClearCells (XtermWidget /* xw */, int /* flags */, unsigned /* len */, int /* row */, int /* col */);
1002extern void ScrnClearCells (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */);
1003extern void ScrnDeleteChar (XtermWidget /* xw */, unsigned  /* n */);
1004extern void ScrnDeleteLine (XtermWidget /* xw */, ScrnBuf  /* sb */, int  /* n */, int  /* last */, unsigned  /* size */, unsigned  /* where */);
1005extern void ScrnDisownSelection (XtermWidget /* xw */);
1006extern void ScrnFillRectangle (XtermWidget /* xw */, XTermRect *,  int ,  unsigned /* flags */, Bool /* keepColors */);
1007extern void ScrnInsertChar (XtermWidget /* xw */, unsigned  /* n */);
1008extern void ScrnInsertLine (XtermWidget /* xw */, ScrnBuf  /* sb */, int  /* last */, int  /* where */, unsigned  /* n */, unsigned  /* size */);
1009extern void ScrnRefresh (XtermWidget /* xw */, int  /* toprow */, int  /* leftcol */, int  /* nrows */, int  /* ncols */, Bool  /* force */);
1010extern void ScrnUpdate (XtermWidget /* xw */, int  /* toprow */, int  /* leftcol */, int  /* nrows */, int  /* ncols */, Bool  /* force */);
1011extern void ScrnWriteText (XtermWidget /* xw */, PAIRED_CHARS(Char * /* str */, Char * /* str2 */), unsigned  /* flags */, unsigned  /* cur_fg_bg */, unsigned  /* length */);
1012extern void xtermParseRect (XtermWidget /* xw */, int, int *, XTermRect *);
1013
1014#if OPT_TRACE && OPT_TRACE_FLAGS
1015extern int  ScrnTstFlag(TScreen * /* screen */, int /* row */, int /* flag */);
1016extern void ScrnClrFlag(TScreen * /* screen */, int /* row */, int /* flag */);
1017extern void ScrnSetFlag(TScreen * /* screen */, int /* row */, int /* flag */);
1018#else
1019#define ScrnClrFlag(screen, row, flag) \
1020        SCRN_BUF_FLAGS(screen, row) = \
1021                (Char *)((long)SCRN_BUF_FLAGS(screen, row) & ~ (flag))
1022
1023#define ScrnSetFlag(screen, row, flag) \
1024        SCRN_BUF_FLAGS(screen, row) = \
1025                (Char *)(((long)SCRN_BUF_FLAGS(screen, row) | (flag)))
1026
1027#define ScrnTstFlag(screen, row, flag) \
1028        (okScrnRow(screen, row) && \
1029         ((long)SCRN_BUF_FLAGS(screen, row) & (flag)) != 0)
1030#endif /* OPT_TRACE && OPT_TRACE_FLAGS */
1031
1032#define ScrnClrBlinked(screen, row) ScrnClrFlag(screen, ROW2INX(screen, row), BLINK)
1033#define ScrnSetBlinked(screen, row) ScrnSetFlag(screen, ROW2INX(screen, row), BLINK)
1034#define ScrnTstBlinked(screen, row) ScrnTstFlag(screen, ROW2INX(screen, row), BLINK)
1035
1036#define ScrnClrWrapped(screen, row) ScrnClrFlag(screen, ROW2INX(screen, row), LINEWRAPPED)
1037#define ScrnSetWrapped(screen, row) ScrnSetFlag(screen, ROW2INX(screen, row), LINEWRAPPED)
1038#define ScrnTstWrapped(screen, row) ScrnTstFlag(screen, ROW2INX(screen, row), LINEWRAPPED)
1039
1040#define ScrnHaveSelection(screen) \
1041                        ((screen)->startH.row != (screen)->endH.row \
1042                        || (screen)->startH.col != (screen)->endH.col)
1043
1044#define ScrnAreLinesInSelection(screen, first, last) \
1045        ((last) >= (screen)->startH.row && (first) <= (screen)->endH.row)
1046
1047#define ScrnIsLineInSelection(screen, line) \
1048        ((line) >= (screen)->startH.row && (line) <= (screen)->endH.row)
1049
1050#define ScrnHaveLineMargins(screen) \
1051                        ((screen)->top_marg != 0 \
1052                        || ((screen)->bot_marg != screen->max_row))
1053
1054#define ScrnIsLineInMargins(screen, line) \
1055        ((line) >= (screen)->top_marg && (line) <= (screen)->bot_marg)
1056
1057#if OPT_DEC_RECTOPS
1058extern void ScrnCopyRectangle (XtermWidget /* xw */, XTermRect *, int, int *);
1059extern void ScrnMarkRectangle (XtermWidget /* xw */, XTermRect *, Bool, int, int *);
1060extern void ScrnWipeRectangle (XtermWidget /* xw */, XTermRect *);
1061#endif
1062
1063#if OPT_WIDE_CHARS
1064extern void ChangeToWide(XtermWidget /* xw */);
1065#endif
1066
1067/* scrollbar.c */
1068extern void DoResizeScreen (XtermWidget /* xw */);
1069extern void HandleScrollBack           PROTO_XT_ACTIONS_ARGS;
1070extern void HandleScrollForward        PROTO_XT_ACTIONS_ARGS;
1071extern void ResizeScrollBar (XtermWidget  /* xw */);
1072extern void ScrollBarDrawThumb (Widget  /* scrollWidget */);
1073extern void ScrollBarOff (XtermWidget  /* xw */);
1074extern void ScrollBarOn (XtermWidget  /* xw */, int  /* init */, int  /* doalloc */);
1075extern void ScrollBarReverseVideo (Widget  /* scrollWidget */);
1076extern void ToggleScrollBar (XtermWidget  /* xw */);
1077extern void WindowScroll (XtermWidget /* xw */, int  /* top */);
1078
1079#ifdef SCROLLBAR_RIGHT
1080extern void updateRightScrollbar(XtermWidget  /* xw */);
1081#else
1082#define updateRightScrollbar(xw) /* nothing */
1083#endif
1084
1085/* tabs.c */
1086extern Bool TabToNextStop (XtermWidget /* xw */);
1087extern Bool TabToPrevStop (XtermWidget /* xw */);
1088extern void TabClear (Tabs  /* tabs */, int  /* col */);
1089extern void TabReset (Tabs  /* tabs */);
1090extern void TabSet (Tabs  /* tabs */, int  /* col */);
1091extern void TabZonk (Tabs  /* tabs */);
1092
1093/* util.c */
1094extern Boolean isDefaultBackground(const char * /* name */);
1095extern Boolean isDefaultForeground(const char * /* name */);
1096extern GC updatedXtermGC (XtermWidget /* xw */, unsigned  /* flags */, unsigned  /* fg_bg */, Bool  /* hilite */);
1097extern int AddToRefresh (XtermWidget /* xw */);
1098extern int ClearInLine (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */);
1099extern int HandleExposure (XtermWidget /* xw */, XEvent * /* event */);
1100extern int char2lower (int  /* ch */);
1101extern int drawXtermText (XtermWidget /* xw */, unsigned  /* flags */, GC  /* gc */, int  /* x */, int  /* y */, int  /* chrset */, PAIRED_CHARS(Char * /* text */, Char * /* text2 */), Cardinal  /* len */, int  /* on_wide */);
1102extern void ChangeColors (XtermWidget  /* xw */, ScrnColors * /* pNew */);
1103extern void ClearRight (XtermWidget /* xw */, int /* n */);
1104extern void ClearScreen (XtermWidget /* xw */);
1105extern void DeleteChar (XtermWidget /* xw */, unsigned /* n */);
1106extern void DeleteLine (XtermWidget /* xw */, int /* n */);
1107extern void FlushScroll (XtermWidget /* xw */);
1108extern void GetColors (XtermWidget  /* xw */, ScrnColors * /* pColors */);
1109extern void InsertChar (XtermWidget /* xw */, unsigned /* n */);
1110extern void InsertLine (XtermWidget /* xw */, int  /* n */);
1111extern void RevScroll (XtermWidget /* xw */, int  /* amount */);
1112extern void ReverseVideo (XtermWidget  /* termw */);
1113extern void WriteText (XtermWidget /* xw */, PAIRED_CHARS(Char * /* str */, Char * /* str2 */), Cardinal /* len */);
1114extern void decode_keyboard_type (XtermWidget /* xw */, struct XTERM_RESOURCE * /* rp */);
1115extern void decode_wcwidth (int  /* mode */, int /* samplesize */, int /* samplepass */);
1116extern void do_erase_display (XtermWidget /* xw */, int  /* param */, int  /* mode */);
1117extern void do_erase_line (XtermWidget /* xw */, int  /* param */, int  /* mode */);
1118extern void getXtermSizeHints (XtermWidget /* xw */);
1119extern void init_keyboard_type (XtermWidget /* xw */, xtermKeyboardType /* type */, Bool  /* set */);
1120extern void recolor_cursor (TScreen * /* screen */, Cursor  /* cursor */, unsigned long  /* fg */, unsigned long  /* bg */);
1121extern void resetXtermGC (XtermWidget /* xw */, unsigned  /* flags */, Bool  /* hilite */);
1122extern void scrolling_copy_area (XtermWidget /* xw */, int  /* firstline */, int  /* nlines */, int  /* amount */);
1123extern void set_keyboard_type (XtermWidget /* xw */, xtermKeyboardType  /* type */, Bool  /* set */);
1124extern void toggle_keyboard_type (XtermWidget /* xw */, xtermKeyboardType  /* type */);
1125extern void update_keyboard_type (void);
1126extern void xtermClear (XtermWidget /* xw */);
1127extern void xtermRepaint (XtermWidget /* xw */);
1128extern void xtermScroll (XtermWidget /* xw */, int /* amount */);
1129extern void xtermSizeHints (XtermWidget  /* xw */, int /* scrollbarWidth */);
1130
1131#if OPT_ISO_COLORS
1132
1133extern unsigned extract_fg (XtermWidget /* xw */, unsigned  /* color */, unsigned  /* flags */);
1134extern unsigned extract_bg (XtermWidget /* xw */, unsigned  /* color */, unsigned  /* flags */);
1135extern unsigned makeColorPair (int  /* fg */, int  /* bg */);
1136extern void ClearCurBackground (XtermWidget /* xw */, int  /* top */, int  /* left */, unsigned  /* height */, unsigned  /* width */);
1137
1138#define xtermColorPair(xw) makeColorPair(xw->sgr_foreground, xw->sgr_background)
1139
1140#define getXtermForeground(xw, flags, color) \
1141        (((flags) & FG_COLOR) && ((int)(color) >= 0 && (color) < MAXCOLORS) \
1142                        ? GET_COLOR_RES(xw->screen.Acolors[color]) \
1143                        : T_COLOR(&(xw->screen), TEXT_FG))
1144
1145#define getXtermBackground(xw, flags, color) \
1146        (((flags) & BG_COLOR) && ((int)(color) >= 0 && (color) < MAXCOLORS) \
1147                        ? GET_COLOR_RES(xw->screen.Acolors[color]) \
1148                        : T_COLOR(&(xw->screen), TEXT_BG))
1149
1150#if OPT_COLOR_RES
1151#define GET_COLOR_RES(res) xtermGetColorRes(&(res))
1152#define SET_COLOR_RES(res,color) (res)->value = color
1153#define EQL_COLOR_RES(res,color) (res)->value == color
1154#define T_COLOR(v,n) (v)->Tcolors[n].value
1155extern Pixel xtermGetColorRes(ColorRes *res);
1156#else
1157#define GET_COLOR_RES(res) res
1158#define SET_COLOR_RES(res,color) *res = color
1159#define EQL_COLOR_RES(res,color) *res == color
1160#define T_COLOR(v,n) (v)->Tcolors[n]
1161#endif
1162
1163#if OPT_EXT_COLORS
1164#define ExtractForeground(color) ((color >> 8) & 0xff)
1165#define ExtractBackground(color) (color & 0xff)
1166#else
1167#define ExtractForeground(color) ((color >> 4) & 0xf)
1168#define ExtractBackground(color) (color & 0xf)
1169#endif
1170
1171#define checkVeryBoldAttr(flags, fg, code, attr) \
1172        if ((flags & FG_COLOR) != 0 \
1173         && (screen->veryBoldColors & attr) == 0 \
1174         && (flags & attr) != 0 \
1175         && (fg == code)) \
1176                 flags &= ~(attr)
1177
1178#define checkVeryBoldColors(flags, fg) \
1179        checkVeryBoldAttr(flags, fg, COLOR_RV, INVERSE); \
1180        checkVeryBoldAttr(flags, fg, COLOR_UL, UNDERLINE); \
1181        checkVeryBoldAttr(flags, fg, COLOR_BD, BOLD); \
1182        checkVeryBoldAttr(flags, fg, COLOR_BL, BLINK)
1183
1184#else /* !OPT_ISO_COLORS */
1185
1186#define ClearDFtBackground(xw, top, left, height, width) \
1187        ClearCurBackground(xw, top, left, height, width)
1188
1189#define ClearCurBackground(xw, top, left, height, width) \
1190        XClearArea (xw->screen.display, VWindow(&(xw->screen)), \
1191                left, top, width, height, False)
1192
1193#define extract_fg(xw, color, flags) (xw)->cur_foreground
1194#define extract_bg(xw, color, flags) (xw)->cur_background
1195
1196                /* FIXME: Reverse-Video? */
1197#define T_COLOR(v,n) (v)->Tcolors[n]
1198#define getXtermBackground(xw, flags, color) T_COLOR(&(xw->screen), TEXT_BG)
1199#define getXtermForeground(xw, flags, color) T_COLOR(&(xw->screen), TEXT_FG)
1200#define makeColorPair(fg, bg) 0
1201#define xtermColorPair(xw) 0
1202
1203#define checkVeryBoldColors(flags, fg) /* nothing */
1204
1205#endif  /* OPT_ISO_COLORS */
1206
1207#if OPT_DEC_CHRSET
1208#define curXtermChrSet(xw, row) \
1209        ((CSET_DOUBLE(SCRN_ROW_CSET((&xw->screen), row))) \
1210                ? SCRN_ROW_CSET((&xw->screen), row) \
1211                : (xw->screen).cur_chrset)
1212#else
1213#define curXtermChrSet(xw, row) 0
1214#endif
1215
1216#define XTERM_CELL(row,col)    getXtermCell(screen,     ROW2INX(screen, row), col)
1217#define XTERM_CELLC(row,col,n) getXtermCellComb(screen, ROW2INX(screen, row), col, n)
1218
1219extern unsigned getXtermCell (TScreen * /* screen */, int  /* row */, int  /* col */);
1220extern void putXtermCell (TScreen * /* screen */, int  /* row */, int  /* col */, int  /* ch */);
1221
1222#if OPT_HIGHLIGHT_COLOR
1223#define isNotForeground(xw, fg, bg, sel) \
1224                ((sel) != T_COLOR(&((xw)->screen), TEXT_FG) \
1225                 && (sel) != (fg) \
1226                 && (sel) != (bg) \
1227                 && (sel) != (xw)->dft_foreground)
1228#define isNotBackground(xw, fg, bg, sel) \
1229                ((sel) != T_COLOR(&((xw)->screen), TEXT_BG) \
1230                 && (sel) != (fg) \
1231                 && (sel) != (bg) \
1232                 && (sel) != (xw)->dft_background)
1233#endif
1234
1235#if OPT_WIDE_CHARS
1236extern Boolean isWideControl(unsigned /* ch */);
1237extern int DamagedCells(TScreen * /* screen */, unsigned /* n */, int * /* klp */, int * /* krp */, int /* row */, int /* col */);
1238extern int DamagedCurCells(TScreen * /* screen */, unsigned /* n */, int * /* klp */, int * /* krp */);
1239extern unsigned AsciiEquivs(unsigned /* ch */);
1240extern unsigned getXtermCellComb (TScreen * /* screen */, int  /* row */, int  /* col */, int /* off */);
1241extern void addXtermCombining (TScreen * /* screen */, int  /* row */, int  /* col */, unsigned  /* ch */);
1242#endif
1243
1244#if OPT_XMC_GLITCH
1245extern void Mark_XMC (XtermWidget /* xw */, int  /* param */);
1246extern void Jump_XMC (XtermWidget /* xw */);
1247extern void Resolve_XMC (XtermWidget /* xw */);
1248#endif
1249
1250#if OPT_WIDE_CHARS
1251unsigned visual_width(PAIRED_CHARS(Char * /* str */, Char * /* str2 */), Cardinal  /* len */);
1252#else
1253#define visual_width(a, b) (b)
1254#endif
1255
1256#define BtoS(b)    (((b) == Maybe) ? "maybe" : ((b) ? "on" : "off"))
1257#define NonNull(s) ((s) ? (s) : "<null>")
1258
1259#ifdef __cplusplus
1260        }
1261#endif
1262
1263#endif  /* included_xterm_h */
Note: See TracBrowser for help on using the browser.