A hint: This file contains one or more very long lines, so maybe it is better readable using the pure text view mode that shows the contents as wrapped lines within the browser window.
1 /* $XTermId: xterm.h,v 1.926 2023/02/14 23:49:04 tom Exp $ */ 2 3 /* 4 * Copyright 1999-2022,2023 by Thomas E. Dickey 5 * 6 * All Rights Reserved 7 * 8 * Permission is hereby granted, free of charge, to any person obtaining a 9 * copy of this software and associated documentation files (the 10 * "Software"), to deal in the Software without restriction, including 11 * without limitation the rights to use, copy, modify, merge, publish, 12 * distribute, sublicense, and/or sell copies of the Software, and to 13 * permit persons to whom the Software is furnished to do so, subject to 14 * the following conditions: 15 * 16 * The above copyright notice and this permission notice shall be included 17 * in all copies or substantial portions of the Software. 18 * 19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 22 * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY 23 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 25 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26 * 27 * Except as contained in this notice, the name(s) of the above copyright 28 * holders shall not be used in advertising or otherwise to promote the 29 * sale, use or other dealings in this Software without prior written 30 * authorization. 31 */ 32 33 /* 34 * Common/useful definitions for XTERM application. 35 * 36 * This is also where we put the fallback definitions if we do not build using 37 * the configure script. 38 */ 39 #ifndef included_xterm_h 40 #define included_xterm_h 41 /* *INDENT-OFF* */ 42 43 #ifdef HAVE_CONFIG_H 44 #include <xtermcfg.h> 45 #endif 46 47 #undef bcopy 48 #include <X11/Xos.h> 49 50 #ifndef HAVE_CONFIG_H 51 52 #define HAVE_LIB_XAW 1 53 54 #ifdef CSRG_BASED 55 /* Get definition of BSD */ 56 #include <sys/param.h> 57 #endif 58 59 #ifndef DFT_TERMTYPE 60 #define DFT_TERMTYPE "xterm" 61 #endif 62 63 #ifndef X_NOT_POSIX 64 #define HAVE_WAITPID 1 65 #define HAVE_SYS_WAIT_H 1 66 #define HAVE_UNISTD_H 1 67 #endif 68 69 #define HAVE_STDLIB_H 1 70 71 #if defined(sun) 72 /* errno is declared in <errno.h> */ 73 #else 74 #define DECL_ERRNO 1 75 #endif 76 77 #undef DECL_PTSNAME /* ptsname() is normally in stdlib.h */ 78 79 #ifndef NOPUTENV 80 #define HAVE_PUTENV 1 81 #endif 82 83 #if defined(CSRG_BASED) || defined(__GNU__) || defined(__minix) 84 #define USE_POSIX_TERMIOS 1 85 #endif 86 87 #ifdef __FreeBSD__ 88 #if __FreeBSD_version >= 900000 89 #define USE_SYSV_UTMP 1 90 #define UTMPX_FOR_UTMP 1 91 #define HAVE_UTMP_UT_HOST 1 92 #define HAVE_UTMP_UT_XTIME 1 93 #define ut_name ut_user 94 #define ut_xtime ut_tv.tv_sec 95 #endif 96 #endif 97 98 #ifdef __NetBSD__ 99 #if __NetBSD_Version__ >= 106030000 /* 1.6C */ 100 #define BSD_UTMPX 1 101 #define ut_xtime ut_tv.tv_sec 102 #endif 103 #endif 104 105 #if defined(hpux) && !defined(__hpux) 106 #define __hpux 1 /* HPUX 11.0 does not define this */ 107 #endif 108 109 #if !defined(__SCO__) && (defined(SCO) || defined(sco) || defined(SCO325)) 110 #define __SCO__ 1 111 #endif 112 113 #ifdef USE_POSIX_TERMIOS 114 #define HAVE_TERMIOS_H 1 115 #define HAVE_TCGETATTR 1 116 #endif 117 118 #if defined(__SCO__) || defined(__UNIXWARE__) || defined(__minix) 119 #define USE_TERMCAP 1 120 #endif 121 122 #if defined(UTMP) 123 #define HAVE_UTMP 1 124 #endif 125 126 #if (defined(__MVS__) || defined(SVR4) || defined(__SCO__) || defined(BSD_UTMPX)) && !defined(__CYGWIN__) 127 #define UTMPX_FOR_UTMP 1 128 #endif 129 130 #if !defined(ISC) && !defined(__QNX__) 131 #define HAVE_UTMP_UT_HOST 1 132 #endif 133 134 #if defined(UTMPX_FOR_UTMP) && !(defined(__MVS__) || defined(__hpux) || defined(__FreeBSD__)) 135 #define HAVE_UTMP_UT_SESSION 1 136 #endif 137 138 #if !(defined(linux) && (!defined(__GLIBC__) || (__GLIBC__ < 2))) && !defined(SVR4) && !defined(__FreeBSD__) 139 #define ut_xstatus ut_exit.e_exit 140 #endif 141 142 #if defined(SVR4) || defined(__SCO__) || defined(BSD_UTMPX) || (defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0))) 143 #define HAVE_UTMP_UT_XTIME 1 144 #endif 145 146 #if defined(linux) || defined(__CYGWIN__) 147 #define USE_LASTLOG 148 #define HAVE_LASTLOG_H 149 #define USE_STRUCT_LASTLOG 150 #elif defined(BSD) && (BSD >= 199103) 151 #ifdef BSD_UTMPX 152 #define USE_LASTLOGX 153 #elif defined(USE_SYSV_UTMP) 154 #else 155 #define USE_LASTLOG 156 #define USE_STRUCT_LASTLOG 157 #endif 158 #endif 159 160 #if defined(__OpenBSD__) 161 #define DEFDELETE_DEL True 162 #define DEF_BACKARO_ERASE True 163 #define DEF_INITIAL_ERASE True 164 #endif 165 166 #if defined(__SCO__) || defined(__UNIXWARE__) 167 #define DEFDELETE_DEL True 168 #define OPT_SCO_FUNC_KEYS 1 169 #endif 170 171 #if defined(__SCO__) || defined(SVR4) || defined(_POSIX_SOURCE) || defined(__QNX__) || defined(__hpux) || (defined(BSD) && (BSD >= 199103)) || defined(__CYGWIN__) 172 #define USE_POSIX_WAIT 173 #endif 174 175 #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) 176 #define USE_SYSV_UTMP 177 #endif 178 179 #if defined(__GNU__) || defined(__MVS__) || defined(__osf__) 180 #define USE_TTY_GROUP 181 #endif 182 183 #if defined(__CYGWIN__) 184 #define HAVE_NCURSES_TERM_H 1 185 #endif 186 187 #ifdef __osf__ 188 #define TTY_GROUP_NAME "terminal" 189 #endif 190 191 #if defined(__MVS__) 192 #undef ut_xstatus 193 #define ut_name ut_user 194 #define ut_xstatus ut_exit.ut_e_exit 195 #define ut_xtime ut_tv.tv_sec 196 #endif 197 198 #if defined(ut_xstatus) 199 #define HAVE_UTMP_UT_XSTATUS 1 200 #endif 201 202 #if defined(XKB) 203 #define HAVE_XKB_BELL_EXT 1 204 #endif 205 206 #if (defined(SVR4) && !defined(__CYGWIN__)) || defined(linux) || (defined(BSD) && (BSD >= 199103)) 207 #define HAVE_POSIX_SAVED_IDS 208 #endif 209 210 #if defined(linux) || defined(__GLIBC__) || (defined(SYSV) && (defined(CRAY) || defined(macII) || defined(__hpux) || defined(__osf__) || defined(__sgi))) || !(defined(SYSV) || defined(__QNX__) || defined(VMS) || defined(__INTERIX)) 211 #define HAVE_INITGROUPS 212 #endif 213 214 #if !defined(USG) && !defined(__minix) 215 #define HAVE_SETITIMER 1 216 #else 217 #define HAVE_SETITIMER 0 218 #endif 219 220 #endif /* HAVE_CONFIG_H */ 221 222 #ifndef HAVE_X11_DECKEYSYM_H 223 #define HAVE_X11_DECKEYSYM_H 1 224 #endif 225 226 #ifndef HAVE_X11_SUNKEYSYM_H 227 #define HAVE_X11_SUNKEYSYM_H 1 228 #endif 229 230 #ifndef HAVE_X11_XF86KEYSYM_H 231 #define HAVE_X11_XF86KEYSYM_H 0 232 #endif 233 234 #if defined(HAVE_X11_EXTENSIONS_XDBE_H) && defined(HAVE_XDBESWAPBUFFERS) 235 #define USE_DOUBLE_BUFFER 1 236 #else 237 #define USE_DOUBLE_BUFFER 0 238 #endif 239 240 /***====================================================================***/ 241 242 /* if compiling with gcc -ansi -pedantic, we must fix POSIX definitions */ 243 #if defined(SVR4) && defined(sun) 244 #ifndef __EXTENSIONS__ 245 #define __EXTENSIONS__ 1 246 #endif 247 #ifndef _POSIX_C_SOURCE 248 #define _POSIX_C_SOURCE 1 249 #endif 250 #endif 251 252 /***====================================================================***/ 253 254 #ifdef HAVE_STDLIB_H 255 #include <stdlib.h> 256 #else 257 extern char *calloc(); 258 extern char *getenv(); 259 extern char *malloc(); 260 extern char *realloc(); 261 extern void exit(); 262 extern void free(); 263 #endif 264 265 #ifdef HAVE_UNISTD_H 266 #include <unistd.h> 267 #endif 268 269 #ifdef HAVE_SYS_WAIT_H 270 #include <sys/wait.h> 271 #endif 272 273 #include <errno.h> 274 #if defined(DECL_ERRNO) && !defined(errno) 275 extern int errno; 276 #endif 277 278 #include <X11/Xlocale.h> 279 280 #ifdef HAVE_STDNORETURN_H 281 #include <stdnoreturn.h> 282 #undef GCC_NORETURN 283 #define GCC_NORETURN STDC_NORETURN 284 #endif 285 286 /* 287 * FIXME: Toggling logging from xterm hangs under Linux 2.0.29 with libc5 if 288 * we use 'waitpid()', while 'wait()' seems to work properly. 289 */ 290 #ifdef linux 291 #undef HAVE_WAITPID 292 #endif 293 294 #ifndef OPT_WIDE_CHARS 295 #define OPT_WIDE_CHARS 0 296 #endif 297 298 #if OPT_WIDE_CHARS 299 #define HIDDEN_CHAR 0xffff 300 #endif 301 302 /***====================================================================***/ 303 304 #define PROTO_XT_ACTIONS_ARGS \ 305 (Widget w, XEvent *event, String *params, Cardinal *num_params) 306 307 #define PROTO_XT_CALLBACK_ARGS \ 308 (Widget gw, XtPointer closure, XtPointer data) 309 310 #define PROTO_XT_CVT_SELECT_ARGS \ 311 (Widget w, Atom *selection, Atom *target, Atom *type, XtPointer *value, unsigned long *length, int *format) 312 313 #define PROTO_XT_EV_HANDLER_ARGS \ 314 (Widget w, XtPointer closure, XEvent *event, Boolean *cont) 315 316 #define PROTO_XT_SEL_CB_ARGS \ 317 (Widget w, XtPointer client_data, Atom *selection, Atom *type, XtPointer value, unsigned long *length, int *format) 318 319 #include <ptyx.h> 320 321 /***====================================================================***/ 322 323 #ifndef GCC_PRINTFLIKE 324 #ifdef _X_ATTRIBUTE_PRINTF 325 #define GCC_PRINTFLIKE(f,n) _X_ATTRIBUTE_PRINTF(f,n) 326 #else 327 #define GCC_PRINTFLIKE(f,n) /* nothing */ 328 #endif 329 #endif 330 331 #ifndef GCC_UNUSED 332 #ifdef _X_UNUSED 333 #define GCC_UNUSED _X_UNUSED 334 #else 335 #define GCC_UNUSED /* nothing */ 336 #endif 337 #endif 338 339 #ifndef GCC_NORETURN 340 #ifdef _X_NORETURN 341 #define GCC_NORETURN _X_NORETURN 342 #else 343 #define GCC_NORETURN /* nothing */ 344 #endif 345 #endif 346 347 /***====================================================================***/ 348 349 #if defined(__GNUC__) && defined(_FORTIFY_SOURCE) 350 #define USE_IGNORE_RC 351 #define IGNORE_RC(func) ignore_unused = (int) func 352 #else 353 #define IGNORE_RC(func) (void) func 354 #endif /* gcc workarounds */ 355 #if (XtSpecificationRelease >= 6) && !defined(NO_XPOLL_H) && !defined(sun) 356 #include <X11/Xpoll.h> 357 #define USE_XPOLL_H 1 358 #else 359 #define Select(n,r,w,e,t) select(n,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval *)t) 360 #define XFD_COPYSET(src,dst) memcpy((dst)->fds_bits, (src)->fds_bits, sizeof(fd_set)) 361 #if defined(__MVS__) && !defined(TIME_WITH_SYS_TIME) 362 #define TIME_WITH_SYS_TIME 363 #endif 364 #endif 365 366 #ifdef TIME_WITH_SYS_TIME 367 # include <sys/time.h> 368 # include <time.h> 369 #else 370 # ifdef HAVE_SYS_TIME_H 371 # include <sys/time.h> 372 # else 373 # include <time.h> 374 # endif 375 #endif 376 377 /* these may be needed for sig_atomic_t */ 378 #include <sys/types.h> 379 #include <signal.h> 380 381 #ifdef USE_SYS_SELECT_H 382 383 #if defined(USE_XPOLL_H) && defined(AIXV3) && defined(NFDBITS) 384 #undef NFDBITS /* conflict between X11/Xpoll.h and sys/select.h */ 385 #endif 386 387 #include <sys/select.h> 388 389 #endif /* USE_SYS_SELECT_H */ 390 391 #include <setjmp.h> 392 393 #if !defined(VMS) && !(defined(linux) && defined(__USE_GNU)) && !defined(__hpux) && !defined(_ALL_SOURCE) && !defined(__osf__) 394 extern char **environ; 395 #endif 396 397 #ifndef _Xconst 398 #define _Xconst const /* Solaris 7 workaround */ 399 #endif /* _Xconst */ 400 401 #define XK_Fn(n) (XK_F1 + (n) - 1) 402 403 #define Maybe 2 404 405 #define ALLOC_STRING(name) \ 406 if (name != 0) \ 407 name = x_strdup(name) 408 #define FREE_STRING(name) \ 409 free_string(name) 410 411 /* strftime format and length of the result */ 412 #define FMT_TIMESTAMP ".%Y.%m.%d.%H.%M.%S" 413 #define LEN_TIMESTAMP sizeof(".YYYY.MM.DD.hh.mm.ss") 414 415 /***====================================================================***/ 416 417 #if OPT_TRACE 418 #undef NDEBUG /* turn on assert's */ 419 #else 420 #ifndef NDEBUG 421 #define NDEBUG /* not debugging, don't do assert's */ 422 #endif 423 #endif 424 425 #include <trace.h> 426 427 #if OPT_TRACE && !defined(DEBUG) 428 #define DEBUG 1 429 #endif 430 431 #ifdef DEBUG 432 #define if_DEBUG(code) if(debug) code 433 #else 434 #define if_DEBUG(code) /*nothing*/ 435 #endif 436 437 #define DEBUG_MSG(text) if_DEBUG({ IGNORE_RC(write(2, text, sizeof(text) - 1)); }) 438 439 /***====================================================================***/ 440 441 #define XtNallowBoldFonts "allowBoldFonts" 442 #define XtNallowC1Printable "allowC1Printable" 443 #define XtNallowColorOps "allowColorOps" 444 #define XtNallowFontOps "allowFontOps" 445 #define XtNallowMouseOps "allowMouseOps" 446 #define XtNallowPasteControls "allowPasteControls" 447 #define XtNallowScrollLock "allowScrollLock" 448 #define XtNallowSendEvents "allowSendEvents" 449 #define XtNallowTcapOps "allowTcapOps" 450 #define XtNallowTitleOps "allowTitleOps" 451 #define XtNallowWindowOps "allowWindowOps" 452 #define XtNaltIsNotMeta "altIsNotMeta" 453 #define XtNaltSendsEscape "altSendsEscape" 454 #define XtNalternateScroll "alternateScroll" 455 #define XtNalwaysBoldMode "alwaysBoldMode" 456 #define XtNalwaysHighlight "alwaysHighlight" 457 #define XtNalwaysUseMods "alwaysUseMods" 458 #define XtNanswerbackString "answerbackString" 459 #define XtNappcursorDefault "appcursorDefault" 460 #define XtNappkeypadDefault "appkeypadDefault" 461 #define XtNassumeAllChars "assumeAllChars" 462 #define XtNautoWrap "autoWrap" 463 #define XtNautoScrollLock "autoScrollLock" 464 #define XtNawaitInput "awaitInput" 465 #define XtNbackarrowKey "backarrowKey" 466 #define XtNbellIsUrgent "bellIsUrgent" 467 #define XtNbellOnReset "bellOnReset" 468 #define XtNbellSuppressTime "bellSuppressTime" 469 #define XtNboldColors "boldColors" 470 #define XtNboldFont "boldFont" 471 #define XtNboldMode "boldMode" 472 #define XtNbrokenLinuxOSC "brokenLinuxOSC" 473 #define XtNbrokenSelections "brokenSelections" 474 #define XtNbrokenStringTerm "brokenStringTerm" 475 #define XtNbuffered "buffered" 476 #define XtNbufferedFPS "bufferedFPS" 477 #define XtNc132 "c132" 478 #define XtNcacheDoublesize "cacheDoublesize" 479 #define XtNcdXtraScroll "cdXtraScroll" 480 #define XtNcharClass "charClass" 481 #define XtNchecksumExtension "checksumExtension" 482 #define XtNcjkWidth "cjkWidth" 483 #define XtNcolorAttrMode "colorAttrMode" 484 #define XtNcolorBDMode "colorBDMode" 485 #define XtNcolorBLMode "colorBLMode" 486 #define XtNcolorITMode "colorITMode" 487 #define XtNcolorInnerBorder "colorInnerBorder" 488 #define XtNcolorMode "colorMode" 489 #define XtNcolorRVMode "colorRVMode" 490 #define XtNcolorULMode "colorULMode" 491 #define XtNcombiningChars "combiningChars" 492 #define XtNctrlFKeys "ctrlFKeys" 493 #define XtNcurses "curses" 494 #define XtNcursorBar "cursorBar" 495 #define XtNcursorBlink "cursorBlink" 496 #define XtNcursorBlinkXOR "cursorBlinkXOR" 497 #define XtNcursorColor "cursorColor" 498 #define XtNcursorOffTime "cursorOffTime" 499 #define XtNcursorOnTime "cursorOnTime" 500 #define XtNcursorUnderLine "cursorUnderLine" 501 #define XtNcutNewline "cutNewline" 502 #define XtNcutToBeginningOfLine "cutToBeginningOfLine" 503 #define XtNdecGraphicsID "decGraphicsID" 504 #define XtNdecTerminalID "decTerminalID" 505 #define XtNdefaultString "defaultString" 506 #define XtNdeleteIsDEL "deleteIsDEL" 507 #define XtNdirectColor "directColor" 508 #define XtNdisallowedColorOps "disallowedColorOps" 509 #define XtNdisallowedFontOps "disallowedFontOps" 510 #define XtNdisallowedMouseOps "disallowedMouseOps" 511 #define XtNdisallowedPasteControls "disallowedPasteControls" 512 #define XtNdisallowedTcapOps "disallowedTcapOps" 513 #define XtNdisallowedWindowOps "disallowedWindowOps" 514 #define XtNdynamicColors "dynamicColors" 515 #define XtNeightBitControl "eightBitControl" 516 #define XtNeightBitInput "eightBitInput" 517 #define XtNeightBitMeta "eightBitMeta" 518 #define XtNeightBitOutput "eightBitOutput" 519 #define XtNeightBitSelectTypes "eightBitSelectTypes" 520 #define XtNeraseSavedLines "eraseSavedLines" 521 #define XtNfaceName "faceName" 522 #define XtNfaceNameDoublesize "faceNameDoublesize" 523 #define XtNfaceSize "faceSize" 524 #define XtNfaintIsRelative "faintIsRelative" 525 #define XtNfastScroll "fastScroll" 526 #define XtNfont1 "font1" 527 #define XtNfont2 "font2" 528 #define XtNfont3 "font3" 529 #define XtNfont4 "font4" 530 #define XtNfont5 "font5" 531 #define XtNfont6 "font6" 532 #define XtNfont7 "font7" 533 #define XtNfontDoublesize "fontDoublesize" 534 #define XtNfontWarnings "fontWarnings" 535 #define XtNforceBoxChars "forceBoxChars" 536 #define XtNforcePackedFont "forcePackedFont" 537 #define XtNforceXftHeight "forceXftHeight" 538 #define XtNformatOtherKeys "formatOtherKeys" 539 #define XtNfreeBoldBox "freeBoldBox" 540 #define XtNfullscreen "fullscreen" 541 #define XtNhighlightColor "highlightColor" 542 #define XtNhighlightColorMode "highlightColorMode" 543 #define XtNhighlightReverse "highlightReverse" 544 #define XtNhighlightSelection "highlightSelection" 545 #define XtNhighlightTextColor "highlightTextColor" 546 #define XtNhpLowerleftBugCompat "hpLowerleftBugCompat" 547 #define XtNi18nSelections "i18nSelections" 548 #define XtNiconHint "iconHint" 549 #define XtNindicatorFormat "indicatorFormat" 550 #define XtNinitialFont "initialFont" 551 #define XtNinternalBorder "internalBorder" 552 #define XtNitalicULMode "italicULMode" 553 #define XtNjumpScroll "jumpScroll" 554 #define XtNkeepClipboard "keepClipboard" 555 #define XtNkeepSelection "keepSelection" 556 #define XtNkeyboardDialect "keyboardDialect" 557 #define XtNlimitFontsets "limitFontsets" 558 #define XtNlimitFontWidth "limitFontWidth" 559 #define XtNlimitResize "limitResize" 560 #define XtNlimitResponse "limitResponse" 561 #define XtNlocale "locale" 562 #define XtNlocaleFilter "localeFilter" 563 #define XtNlogFile "logFile" 564 #define XtNlogInhibit "logInhibit" 565 #define XtNlogging "logging" 566 #define XtNloginShell "loginShell" 567 #define XtNmarginBell "marginBell" 568 #define XtNmaxGraphicSize "maxGraphicSize" 569 #define XtNmaximized "maximized" 570 #define XtNmenuBar "menuBar" /* internal */ 571 #define XtNmenuHeight "menuHeight" 572 #define XtNmetaSendsEscape "metaSendsEscape" 573 #define XtNmkSamplePass "mkSamplePass" 574 #define XtNmkSampleSize "mkSampleSize" 575 #define XtNmkWidth "mkWidth" 576 #define XtNmodifyCursorKeys "modifyCursorKeys" 577 #define XtNmodifyFunctionKeys "modifyFunctionKeys" 578 #define XtNmodifyKeyboard "modifyKeyboard" 579 #define XtNmodifyKeypadKeys "modifyKeypadKeys" 580 #define XtNmodifyOtherKeys "modifyOtherKeys" 581 #define XtNmodifyStringKeys "modifyStringKeys" 582 #define XtNmultiClickTime "multiClickTime" 583 #define XtNmultiScroll "multiScroll" 584 #define XtNnMarginBell "nMarginBell" 585 #define XtNnextEventDelay "nextEventDelay" 586 #define XtNnumColorRegisters "numColorRegisters" 587 #define XtNnumLock "numLock" 588 #define XtNoldXtermFKeys "oldXtermFKeys" 589 #define XtNpointerColor "pointerColor" 590 #define XtNpointerColorBackground "pointerColorBackground" 591 #define XtNpointerFont "pointerFont" 592 #define XtNpointerMode "pointerMode" 593 #define XtNpointerShape "pointerShape" 594 #define XtNpopOnBell "popOnBell" 595 #define XtNprecompose "precompose" 596 #define XtNprintAttributes "printAttributes" 597 #define XtNprinterAutoClose "printerAutoClose" 598 #define XtNprinterCommand "printerCommand" 599 #define XtNprinterControlMode "printerControlMode" 600 #define XtNprinterExtent "printerExtent" 601 #define XtNprinterFormFeed "printerFormFeed" 602 #define XtNprinterNewLine "printerNewLine" 603 #define XtNprivateColorRegisters "privateColorRegisters" 604 #define XtNquietGrab "quietGrab" 605 #define XtNregisDefaultFont "regisDefaultFont" 606 #define XtNregisScreenSize "regisScreenSize" 607 #define XtNrenderFont "renderFont" 608 #define XtNresizeByPixel "resizeByPixel" 609 #define XtNresizeGravity "resizeGravity" 610 #define XtNretryInputMethod "retryInputMethod" 611 #define XtNreverseWrap "reverseWrap" 612 #define XtNrightScrollBar "rightScrollBar" 613 #define XtNsaveLines "saveLines" 614 #define XtNscaleHeight "scaleHeight" 615 #define XtNscrollBar "scrollBar" 616 #define XtNscrollBarBorder "scrollBarBorder" 617 #define XtNscrollKey "scrollKey" 618 #define XtNscrollLines "scrollLines" 619 #define XtNscrollTtyOutput "scrollTtyOutput" 620 #define XtNselectToClipboard "selectToClipboard" 621 #define XtNshiftEscape "shiftEscape" 622 #define XtNshiftFonts "shiftFonts" 623 #define XtNshowBlinkAsBold "showBlinkAsBold" 624 #define XtNshowMissingGlyphs "showMissingGlyphs" 625 #define XtNshowWrapMarks "showWrapMarks" 626 #define XtNsignalInhibit "signalInhibit" 627 #define XtNsixelScrolling "sixelScrolling" 628 #define XtNsixelScrollsRight "sixelScrollsRight" 629 #define XtNtekGeometry "tekGeometry" 630 #define XtNtekInhibit "tekInhibit" 631 #define XtNtekSmall "tekSmall" 632 #define XtNtekStartup "tekStartup" 633 #define XtNtiXtraScroll "tiXtraScroll" 634 #define XtNtiteInhibit "titeInhibit" 635 #define XtNtitleModes "titleModes" 636 #define XtNtoolBar "toolBar" 637 #define XtNtrimSelection "trimSelection" 638 #define XtNunderLine "underLine" 639 #define XtNuseBorderClipping "useBorderClipping" 640 #define XtNuseClipping "useClipping" 641 #define XtNutf8 "utf8" 642 #define XtNutf8Fonts "utf8Fonts" 643 #define XtNutf8Latin1 "utf8Latin1" 644 #define XtNutf8SelectTypes "utf8SelectTypes" 645 #define XtNutf8Title "utf8Title" 646 #define XtNutf8Weblike "utf8Weblike" 647 #define XtNveryBoldColors "veryBoldColors" 648 #define XtNvisualBell "visualBell" 649 #define XtNvisualBellDelay "visualBellDelay" 650 #define XtNvisualBellLine "visualBellLine" 651 #define XtNvt100Graphics "vt100Graphics" 652 #define XtNwideBoldFont "wideBoldFont" 653 #define XtNwideChars "wideChars" 654 #define XtNwideFont "wideFont" 655 #define XtNxftMaxGlyphMemory "xftMaxGlyphMemory" 656 #define XtNxftMaxUnrefFonts "xftMaxUnrefFonts" 657 #define XtNxftTrackMemUsage "xftTrackMemUsage" 658 #define XtNximFont "ximFont" 659 #define XtNxmcAttributes "xmcAttributes" /* ncurses-testing */ 660 #define XtNxmcGlitch "xmcGlitch" /* ncurses-testing */ 661 #define XtNxmcInline "xmcInline" /* ncurses-testing */ 662 #define XtNxmcMoveSGR "xmcMoveSGR" /* ncurses-testing */ 663 664 #define XtCAllowBoldFonts "AllowBoldFonts" 665 #define XtCAllowC1Printable "AllowC1Printable" 666 #define XtCAllowColorOps "AllowColorOps" 667 #define XtCAllowFontOps "AllowFontOps" 668 #define XtCAllowMouseOps "AllowMouseOps" 669 #define XtCAllowPasteControls "AllowPasteControls" 670 #define XtCAllowScrollLock "AllowScrollLock" 671 #define XtCAllowSendEvents "AllowSendEvents" 672 #define XtCAllowTcapOps "AllowTcapOps" 673 #define XtCAllowTitleOps "AllowTitleOps" 674 #define XtCAllowWindowOps "AllowWindowOps" 675 #define XtCAltIsNotMeta "AltIsNotMeta" 676 #define XtCAltSendsEscape "AltSendsEscape" 677 #define XtCAlwaysBoldMode "AlwaysBoldMode" 678 #define XtCAlwaysHighlight "AlwaysHighlight" 679 #define XtCAlwaysUseMods "AlwaysUseMods" 680 #define XtCAnswerbackString "AnswerbackString" 681 #define XtCAppcursorDefault "AppcursorDefault" 682 #define XtCAppkeypadDefault "AppkeypadDefault" 683 #define XtCAssumeAllChars "AssumeAllChars" 684 #define XtCAutoWrap "AutoWrap" 685 #define XtCAutoScrollLock "AutoScrollLock" 686 #define XtCAwaitInput "AwaitInput" 687 #define XtCBackarrowKey "BackarrowKey" 688 #define XtCBellIsUrgent "BellIsUrgent" 689 #define XtCBellOnReset "BellOnReset" 690 #define XtCBellSuppressTime "BellSuppressTime" 691 #define XtCBoldFont "BoldFont" 692 #define XtCBoldMode "BoldMode" 693 #define XtCBrokenLinuxOSC "BrokenLinuxOSC" 694 #define XtCBrokenSelections "BrokenSelections" 695 #define XtCBrokenStringTerm "BrokenStringTerm" 696 #define XtCBuffered "Buffered" 697 #define XtCBufferedFPS "BufferedFPS" 698 #define XtCC132 "C132" 699 #define XtCCacheDoublesize "CacheDoublesize" 700 #define XtCCdXtraScroll "CdXtraScroll" 701 #define XtCCharClass "CharClass" 702 #define XtCChecksumExtension "ChecksumExtension" 703 #define XtCCjkWidth "CjkWidth" 704 #define XtCColorAttrMode "ColorAttrMode" 705 #define XtCColorInnerBorder "ColorInnerBorder" 706 #define XtCColorMode "ColorMode" 707 #define XtCColumn "Column" 708 #define XtCCombiningChars "CombiningChars" 709 #define XtCCtrlFKeys "CtrlFKeys" 710 #define XtCCurses "Curses" 711 #define XtCCursorBar "CursorBar" 712 #define XtCCursorBlink "CursorBlink" 713 #define XtCCursorBlinkXOR "CursorBlinkXOR" 714 #define XtCCursorOffTime "CursorOffTime" 715 #define XtCCursorOnTime "CursorOnTime" 716 #define XtCCursorUnderLine "CursorUnderLine" 717 #define XtCCutNewline "CutNewline" 718 #define XtCCutToBeginningOfLine "CutToBeginningOfLine" 719 #define XtCDecGraphicsID "DecGraphicsID" 720 #define XtCDecTerminalID "DecTerminalID" 721 #define XtCDefaultString "DefaultString" 722 #define XtCDeleteIsDEL "DeleteIsDEL" 723 #define XtCDirectColor "DirectColor" 724 #define XtCDisallowedColorOps "DisallowedColorOps" 725 #define XtCDisallowedFontOps "DisallowedFontOps" 726 #define XtCDisallowedMouseOps "DisallowedMouseOps" 727 #define XtCDisallowedPasteControls "DisallowedPasteControls" 728 #define XtCDisallowedTcapOps "DisallowedTcapOps" 729 #define XtCDisallowedWindowOps "DisallowedWindowOps" 730 #define XtCDynamicColors "DynamicColors" 731 #define XtCEightBitControl "EightBitControl" 732 #define XtCEightBitInput "EightBitInput" 733 #define XtCEightBitMeta "EightBitMeta" 734 #define XtCEightBitOutput "EightBitOutput" 735 #define XtCEightBitSelectTypes "EightBitSelectTypes" 736 #define XtCEraseSavedLines "EraseSavedLines" 737 #define XtCFaceName "FaceName" 738 #define XtCFaceNameDoublesize "FaceNameDoublesize" 739 #define XtCFaceSize "FaceSize" 740 #define XtCFaintIsRelative "FaintIsRelative" 741 #define XtCFastScroll "FastScroll" 742 #define XtCFont1 "Font1" 743 #define XtCFont2 "Font2" 744 #define XtCFont3 "Font3" 745 #define XtCFont4 "Font4" 746 #define XtCFont5 "Font5" 747 #define XtCFont6 "Font6" 748 #define XtCFont7 "Font7" 749 #define XtCFontDoublesize "FontDoublesize" 750 #define XtCFontWarnings "FontWarnings" 751 #define XtCForceBoxChars "ForceBoxChars" 752 #define XtCForcePackedFont "ForcePackedFont" 753 #define XtCForceXftHeight "ForceXftHeight" 754 #define XtCFormatOtherKeys "FormatOtherKeys" 755 #define XtCFreeBoldBox "FreeBoldBox" 756 #define XtCFullscreen "Fullscreen" 757 #define XtCHighlightColorMode "HighlightColorMode" 758 #define XtCHighlightReverse "HighlightReverse" 759 #define XtCHighlightSelection "HighlightSelection" 760 #define XtCHpLowerleftBugCompat "HpLowerleftBugCompat" 761 #define XtCI18nSelections "I18nSelections" 762 #define XtCIconHint "IconHint" 763 #define XtCIndicatorFormat "IndicatorFormat" 764 #define XtCInitialFont "InitialFont" 765 #define XtCJumpScroll "JumpScroll" 766 #define XtCKeepClipboard "KeepClipboard" 767 #define XtCKeepSelection "KeepSelection" 768 #define XtCKeyboardDialect "KeyboardDialect" 769 #define XtCLimitFontsets "LimitFontsets" 770 #define XtCLimitFontWidth "LimitFontWidth" 771 #define XtCLimitResize "LimitResize" 772 #define XtCLimitResponse "LimitResponse" 773 #define XtCLocale "Locale" 774 #define XtCLocaleFilter "LocaleFilter" 775 #define XtCLogInhibit "LogInhibit" 776 #define XtCLogfile "Logfile" 777 #define XtCLogging "Logging" 778 #define XtCLoginShell "LoginShell" 779 #define XtCMarginBell "MarginBell" 780 #define XtCMaxGraphicSize "MaxGraphicSize" 781 #define XtCMaximized "Maximized" 782 #define XtCMenuBar "MenuBar" /* internal */ 783 #define XtCMenuHeight "MenuHeight" 784 #define XtCMetaSendsEscape "MetaSendsEscape" 785 #define XtCMkSamplePass "MkSamplePass" 786 #define XtCMkSampleSize "MkSampleSize" 787 #define XtCMkWidth "MkWidth" 788 #define XtCModifyCursorKeys "ModifyCursorKeys" 789 #define XtCModifyFunctionKeys "ModifyFunctionKeys" 790 #define XtCModifyKeyboard "ModifyKeyboard" 791 #define XtCModifyKeypadKeys "ModifyKeypadKeys" 792 #define XtCModifyOtherKeys "ModifyOtherKeys" 793 #define XtCModifyStringKeys "ModifyStringKeys" 794 #define XtCMultiClickTime "MultiClickTime" 795 #define XtCMultiScroll "MultiScroll" 796 #define XtCNextEventDelay "NextEventDelay" 797 #define XtCNumColorRegisters "NumColorRegisters" 798 #define XtCNumLock "NumLock" 799 #define XtCOldXtermFKeys "OldXtermFKeys" 800 #define XtCPointerFont "PointerFont" 801 #define XtCPointerMode "PointerMode" 802 #define XtCPopOnBell "PopOnBell" 803 #define XtCPrecompose "Precompose" 804 #define XtCPrintAttributes "PrintAttributes" 805 #define XtCPrinterAutoClose "PrinterAutoClose" 806 #define XtCPrinterCommand "PrinterCommand" 807 #define XtCPrinterControlMode "PrinterControlMode" 808 #define XtCPrinterExtent "PrinterExtent" 809 #define XtCPrinterFormFeed "PrinterFormFeed" 810 #define XtCPrinterNewLine "PrinterNewLine" 811 #define XtCPrivateColorRegisters "PrivateColorRegisters" 812 #define XtCQuietGrab "QuietGrab" 813 #define XtCRegisDefaultFont "RegisDefaultFont" 814 #define XtCRegisScreenSize "RegisScreenSize" 815 #define XtCRenderFont "RenderFont" 816 #define XtCResizeByPixel "ResizeByPixel" 817 #define XtCResizeGravity "ResizeGravity" 818 #define XtCRetryInputMethod "RetryInputMethod" 819 #define XtCReverseWrap "ReverseWrap" 820 #define XtCRightScrollBar "RightScrollBar" 821 #define XtCSaveLines "SaveLines" 822 #define XtCScaleHeight "ScaleHeight" 823 #define XtCScrollBar "ScrollBar" 824 #define XtCScrollBarBorder "ScrollBarBorder" 825 #define XtCScrollCond "ScrollCond" 826 #define XtCScrollLines "ScrollLines" 827 #define XtCSelectToClipboard "SelectToClipboard" 828 #define XtCShiftEscape "ShiftEscape" 829 #define XtCShiftFonts "ShiftFonts" 830 #define XtCShowBlinkAsBold "ShowBlinkAsBold" 831 #define XtCShowMissingGlyphs "ShowMissingGlyphs" 832 #define XtCShowWrapMarks "ShowWrapMarks" 833 #define XtCSignalInhibit "SignalInhibit" 834 #define XtCSixelScrolling "SixelScrolling" 835 #define XtCSixelScrollsRight "SixelScrollsRight" 836 #define XtCTekInhibit "TekInhibit" 837 #define XtCTekSmall "TekSmall" 838 #define XtCTekStartup "TekStartup" 839 #define XtCTiXtraScroll "TiXtraScroll" 840 #define XtCTiteInhibit "TiteInhibit" 841 #define XtCTitleModes "TitleModes" 842 #define XtCToolBar "ToolBar" 843 #define XtCTrimSelection "TrimSelection" 844 #define XtCUnderLine "UnderLine" 845 #define XtCUseBorderClipping "UseBorderClipping" 846 #define XtCUseClipping "UseClipping" 847 #define XtCUtf8 "Utf8" 848 #define XtCUtf8Fonts "Utf8Fonts" 849 #define XtCUtf8Latin1 "Utf8Latin1" 850 #define XtCUtf8SelectTypes "Utf8SelectTypes" 851 #define XtCUtf8Title "Utf8Title" 852 #define XtCUtf8Weblike "Utf8Weblike" 853 #define XtCVT100Graphics "VT100Graphics" 854 #define XtCVeryBoldColors "VeryBoldColors" 855 #define XtCVisualBell "VisualBell" 856 #define XtCVisualBellDelay "VisualBellDelay" 857 #define XtCVisualBellLine "VisualBellLine" 858 #define XtCWideBoldFont "WideBoldFont" 859 #define XtCWideChars "WideChars" 860 #define XtCWideFont "WideFont" 861 #define XtCXftMaxGlyphMemory "XftMaxGlyphMemory" 862 #define XtCXftMaxUnrefFonts "XftMaxUnrefFonts" 863 #define XtCXftTrackMemUsage "XftTrackMemUsage" 864 #define XtCXimFont "XimFont" 865 #define XtCXmcAttributes "XmcAttributes" /* ncurses-testing */ 866 #define XtCXmcGlitch "XmcGlitch" /* ncurses-testing */ 867 #define XtCXmcInline "XmcInline" /* ncurses-testing */ 868 #define XtCXmcMoveSGR "XmcMoveSGR" /* ncurses-testing */ 869 870 #if defined(NO_ACTIVE_ICON) && !defined(XtNgeometry) 871 #define XtNgeometry "geometry" 872 #define XtCGeometry "Geometry" 873 #endif 874 875 #if OPT_COLOR_CLASS 876 #define XtCCursorColor "CursorColor" 877 #define XtCPointerColor "PointerColor" 878 #define XtCHighlightColor "HighlightColor" 879 #define XtCHighlightTextColor "HighlightTextColor" 880 #else 881 #define XtCCursorColor XtCForeground 882 #define XtCPointerColor XtCForeground 883 #define XtCHighlightColor XtCForeground 884 #define XtCHighlightTextColor XtCBackground 885 #endif 886 887 /***====================================================================***/ 888 889 #ifdef __cplusplus 890 extern "C" { 891 #endif 892 893 struct XTERM_RESOURCE; 894 895 /* Tekproc.c */ 896 #if OPT_TEK4014 897 extern TekWidget getTekWidget(Widget /* w */); 898 extern int TekGetFontSize (const char * /* param */); 899 extern int TekInit (void); 900 extern void ChangeTekColors (TekWidget /* tw */, TScreen * /* screen */, ScrnColors * /* pNew */); 901 extern void HandleGINInput PROTO_XT_ACTIONS_ARGS; 902 extern void TCursorToggle (TekWidget /* tw */, int /* toggle */); 903 extern void TekCopy (TekWidget /* tw */); 904 extern void TekEnqMouse (TekWidget /* tw */, int /* c */); 905 extern void TekExpose (Widget /* w */, XEvent * /* event */, Region /* region */); 906 extern void TekGINoff (TekWidget /* tw */); 907 extern void TekRefresh (TekWidget /* tw */); 908 extern void TekRepaint (TekWidget /* xw */); 909 extern void TekReverseVideo (XtermWidget /* xw */, TekWidget /* tw */); 910 extern void TekRun (void); 911 extern void TekSetFontSize (TekWidget /* tw */, Bool /* fromMenu */, int /* newitem */); 912 extern void TekSetWinSize (TekWidget /* tw */); 913 extern void TekSimulatePageButton (TekWidget /* tw */, Bool /* reset */); 914 #endif 915 916 /* button.c */ 917 #define MotionOff( s, t ) if (!(screen->hide_pointer)) { \ 918 (s)->event_mask |= ButtonMotionMask; \ 919 (s)->event_mask &= ~PointerMotionMask; \ 920 XSelectInput(XtDisplay((t)), XtWindow((t)), (long) (s)->event_mask); } 921 922 #define MotionOn( s, t ) { \ 923 (s)->event_mask &= ~ButtonMotionMask; \ 924 (s)->event_mask |= PointerMotionMask; \ 925 XSelectInput(XtDisplay((t)), XtWindow((t)), (long) (s)->event_mask); } 926 927 extern Bool SendMousePosition (XtermWidget /* w */, XEvent* /* event */); 928 extern XtermMouseModes okSendMousePos(XtermWidget /* xw */); 929 extern void DiredButton PROTO_XT_ACTIONS_ARGS; 930 extern void DisownSelection (XtermWidget /* xw */); 931 extern void UnhiliteSelection (XtermWidget /* xw */); 932 extern void HandleCopySelection PROTO_XT_ACTIONS_ARGS; 933 extern void HandleInsertSelection PROTO_XT_ACTIONS_ARGS; 934 extern void HandleKeyboardSelectEnd PROTO_XT_ACTIONS_ARGS; 935 extern void HandleKeyboardSelectExtend PROTO_XT_ACTIONS_ARGS; 936 extern void HandleKeyboardSelectStart PROTO_XT_ACTIONS_ARGS; 937 extern void HandleKeyboardStartExtend PROTO_XT_ACTIONS_ARGS; 938 extern void HandlePointerMotion PROTO_XT_ACTIONS_ARGS; 939 extern void HandlePointerButton PROTO_XT_ACTIONS_ARGS; 940 extern void HandleSelectEnd PROTO_XT_ACTIONS_ARGS; 941 extern void HandleSelectExtend PROTO_XT_ACTIONS_ARGS; 942 extern void HandleSelectSet PROTO_XT_ACTIONS_ARGS; 943 extern void HandleSelectStart PROTO_XT_ACTIONS_ARGS; 944 extern void HandleStartExtend PROTO_XT_ACTIONS_ARGS; 945 extern void ResizeSelection (TScreen * /* screen */, int /* rows */, int /* cols */); 946 extern void ScrollSelection (TScreen * /* screen */, int /* amount */, Bool /* always */); 947 extern void TrackMouse (XtermWidget /* xw */, int /* func */, CELL * /* start */, int /* firstrow */, int /* lastrow */); 948 extern void ViButton PROTO_XT_ACTIONS_ARGS; 949 950 extern void UnmapSelections (XtermWidget /* xw */); 951 extern int xtermUtf8ToTextList (XtermWidget /* xw */, XTextProperty * /* text_prop */, char *** /* text_list */, int * /* text_list_count */); 952 extern void xtermButtonInit (XtermWidget /* xw */); 953 954 #if OPT_DEC_LOCATOR 955 extern void GetLocatorPosition (XtermWidget /* w */); 956 extern void InitLocatorFilter (XtermWidget /* w */); 957 #endif /* OPT_DEC_LOCATOR */ 958 959 #if OPT_FOCUS_EVENT 960 extern void SendFocusButton(XtermWidget /* xw */, XFocusChangeEvent * /* event */); 961 #else 962 #define SendFocusBotton(xw, event) /* nothing */ 963 #endif 964 965 #if OPT_PASTE64 966 extern void AppendToSelectionBuffer (TScreen * /* screen */, unsigned /* c */, String /* selection */); 967 extern void ClearSelectionBuffer (TScreen * /* screen */, String /* selection */); 968 extern void CompleteSelection (XtermWidget /* xw */, String * /* args */, Cardinal /* len */); 969 extern void xtermGetSelection (Widget /* w */, Time /* ev_time */, String * /* params */, Cardinal /* num_params */, Atom * /* targets */); 970 #endif 971 972 #if OPT_READLINE 973 extern void ReadLineButton PROTO_XT_ACTIONS_ARGS; 974 #endif 975 976 #if OPT_REPORT_CCLASS 977 extern void report_char_class(XtermWidget); 978 #endif 979 980 #define IsLatin1(n) (((n) >= 32 && (n) <= 126) || ((n) >= 160 && (n) <= 255)) 981 982 #if OPT_WIDE_CHARS 983 #define WideCells(n) (((IChar)(n) >= first_widechar) ? my_wcwidth((wchar_t) (n)) : 1) 984 #define isWideFrg(n) (((n) == HIDDEN_CHAR) || (WideCells((n)) == 2)) 985 #define isWide(n) (((IChar)(n) >= first_widechar) && isWideFrg(n)) 986 #define CharWidth(screen, n) ((!((screen)->utf8_mode) && ((n) < 256)) \ 987 ? (IsLatin1(n) ? 1 : 0) \ 988 : my_wcwidth((wchar_t) (n))) 989 #else 990 #define WideCells(n) 1 991 #define CharWidth(screen, n) (IsLatin1(n) ? 1 : 0) 992 #endif 993 994 /* cachedCgs.c */ 995 extern CgsEnum getCgsId(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/); 996 extern GC freeCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/); 997 extern GC getCgsGC(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/); 998 extern Pixel getCgsBack(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/); 999 extern Pixel getCgsFore(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/); 1000 extern XTermFonts * getCgsFont(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/); 1001 extern void clrCgsFonts(XtermWidget /*xw*/, VTwin * /*cgsWin*/, XTermFonts * /*font*/); 1002 extern void copyCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*dstCgsId*/, CgsEnum /*srcCgsId*/); 1003 extern void redoCgs(XtermWidget /*xw*/, Pixel /*fg*/, Pixel /*bg*/, CgsEnum /*cgsId*/); 1004 extern void setCgsBack(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, Pixel /*bg*/); 1005 extern void setCgsCSet(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, unsigned /*cset*/); 1006 extern void setCgsFont(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, XTermFonts * /*font*/); 1007 extern void setCgsFont2(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, XTermFonts * /*font*/, unsigned /*which*/); 1008 extern void setCgsFore(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, Pixel /*fg*/); 1009 extern void swapCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*dstCgsId*/, CgsEnum /*srcCgsId*/); 1010 1011 #ifdef NO_LEAKS 1012 extern void noleaks_cachedCgs (XtermWidget /* xw */); 1013 #endif 1014 1015 /* charproc.c */ 1016 extern Bool CheckBufPtrs (TScreen * /* screen */); 1017 extern Bool set_cursor_gcs (XtermWidget /* xw */); 1018 extern char * vt100ResourceToString (XtermWidget /* xw */, const char * /* name */); 1019 extern int VTInit (XtermWidget /* xw */); 1020 extern Bool FindFontSelection (XtermWidget /* xw */, const char * /* atom_name */, Bool /* justprobe */); 1021 extern void HideCursor (XtermWidget /* xw */); 1022 extern void RestartBlinking(XtermWidget /* xw */); 1023 extern void ShowCursor (XtermWidget /* xw */); 1024 extern void SwitchBufPtrs (XtermWidget /* xw */, int /* toBuf */); 1025 extern void ToggleAlternate (XtermWidget /* xw */); 1026 extern void VTInitTranslations (void); 1027 extern GCC_NORETURN void VTReset (XtermWidget /* xw */, int /* full */, int /* saved */); 1028 extern void VTRun (XtermWidget /* xw */); 1029 extern void dotext (XtermWidget /* xw */, DECNRCM_codes /* charset */, IChar * /* buf */, Cardinal /* len */); 1030 extern void getKeymapResources(Widget /* w */, const char * /*mapName */, const char * /* mapClass */, const char * /* type */, void * /* result */, size_t /* size */); 1031 extern void initBorderGC (XtermWidget /* xw */, VTwin * /* win */); 1032 extern void lookupSelectUnit(XtermWidget /* xw */, Cardinal /* item */, String /* value */); 1033 extern void releaseCursorGCs(XtermWidget /*xw*/); 1034 extern void releaseWindowGCs(XtermWidget /*xw*/, VTwin * /*win*/); 1035 extern void resetCharsets (TScreen * /* screen */); 1036 extern void resetMargins (XtermWidget /* xw */); 1037 extern void restoreCharsets (TScreen * /* screen */, DECNRCM_codes * /* source */); 1038 extern void saveCharsets (TScreen * /* screen */, DECNRCM_codes * /* target */); 1039 extern void set_max_col(TScreen * /* screen */, int /* cols */); 1040 extern void set_max_row(TScreen * /* screen */, int /* rows */); 1041 extern void unparse_disallowed_ops (XtermWidget /* xw */, char * /* value */); 1042 extern void unparse_end (XtermWidget /* xw */); 1043 extern void unparseputc (XtermWidget /* xw */, int /* c */); 1044 extern void unparseputc1 (XtermWidget /* xw */, int /* c */); 1045 extern void unparseputn (XtermWidget /* xw */, unsigned /* n */); 1046 extern void unparseputs (XtermWidget /* xw */, const char * /* s */); 1047 extern void unparseseq (XtermWidget /* xw */, ANSI * /* ap */); 1048 extern void v_write (int /* f */, const Char * /* d */, size_t /* len */); 1049 extern void xtermAddInput (Widget /* w */); 1050 extern void xtermDecodeSCS (XtermWidget /* xw */, int /* which */, int /* sgroup */, int /* prefix */, int /* suffix */); 1051 1052 #if OPT_BLINK_CURS 1053 extern void ToggleCursorBlink(XtermWidget /* xw */); 1054 #endif 1055 1056 #if OPT_BLINK_TEXT 1057 extern Bool LineHasBlinking(TScreen * /* screen */, CLineData * /* ld */); 1058 #endif 1059 1060 #if OPT_INPUT_METHOD 1061 extern TInput *lookupTInput (XtermWidget /* xw */, Widget /* w */); 1062 #endif 1063 1064 #if OPT_ISO_COLORS 1065 extern void SGR_Background (XtermWidget /* xw */, int /* color */); 1066 extern void SGR_Foreground (XtermWidget /* xw */, int /* color */); 1067 extern void setExtendedColors (XtermWidget /* xw */); 1068 #endif 1069 1070 #ifdef NO_LEAKS 1071 extern void noleaks_charproc (void); 1072 #endif 1073 1074 /* charsets.c */ 1075 extern unsigned xtermCharSetIn (XtermWidget /* xw */, unsigned /* code */, DECNRCM_codes /* charset */); 1076 extern int xtermCharSetOut (XtermWidget /* xw */, IChar * /* buf */, IChar * /* ptr */, DECNRCM_codes /* charset */); 1077 1078 /* cursor.c */ 1079 extern int CursorCol (XtermWidget /* xw */); 1080 extern int CursorRow (XtermWidget /* xw */); 1081 extern void AdjustSavedCursor (XtermWidget /* xw */, int /* adjust */); 1082 extern void CarriageReturn (XtermWidget /* xw */); 1083 extern void CursorBack (XtermWidget /* xw */, int /* n */); 1084 extern void CursorDown (TScreen * /* screen */, int /* n */); 1085 extern void CursorForward (XtermWidget /* xw */, int /* n */); 1086 extern void CursorNextLine (XtermWidget /* xw */, int /* count */); 1087 extern void CursorPrevLine (XtermWidget /* xw */, int /* count */); 1088 extern void CursorRestore2 (XtermWidget /* xw */, SavedCursor * /* sc */); 1089 extern void CursorRestore (XtermWidget /* xw */); 1090 extern void CursorSave2 (XtermWidget /* xw */, SavedCursor * /* sc */); 1091 extern void CursorSave (XtermWidget /* xw */); 1092 extern void CursorSet (TScreen * /* screen */, int /* row */, int /* col */, unsigned /* flags */); 1093 extern void CursorUp (TScreen * /* screen */, int /* n */); 1094 extern void RevIndex (XtermWidget /* xw */, int /* amount */); 1095 extern void xtermIndex (XtermWidget /* xw */, int /* amount */); 1096 1097 #if OPT_TRACE 1098 extern int set_cur_col(TScreen * /* screen */, int /* value */); 1099 extern int set_cur_row(TScreen * /* screen */, int /* value */); 1100 #else 1101 #define set_cur_col(screen, value) screen->cur_col = value 1102 #define set_cur_row(screen, value) \ 1103 do { \ 1104 int row_value = value; \ 1105 if_STATUS_LINE(screen, { \ 1106 row_value = LastRowNumber(screen); \ 1107 }); \ 1108 screen->cur_row = row_value; \ 1109 } while (0) 1110 #endif 1111 1112 /* cursorfont.c */ 1113 extern Cursor CreateAlternateCursorFontCursor(Display * /* dpy */, char const * /* cursorfont */, unsigned int /* which */); 1114 extern int CursorFontIndexFromShapeName(char const * /* shapename */); 1115 1116 /* doublechr.c */ 1117 extern void xterm_DECDHL (XtermWidget /* xw */, Bool /* top */); 1118 extern void xterm_DECSWL (XtermWidget /* xw */); 1119 extern void xterm_DECDWL (XtermWidget /* xw */); 1120 extern void xterm_ResetDouble(XtermWidget /* xw */); 1121 #if OPT_DEC_CHRSET 1122 extern GC xterm_DoubleGC(XTermDraw * /* params */, GC /* old_gc */, int * /* inxp */); 1123 #if OPT_RENDERFONT 1124 extern XTermXftFonts * xterm_DoubleFT(XTermDraw * /* params */, unsigned /* chrset */, unsigned /* attr_flags */); 1125 extern void freeall_DoubleFT(XtermWidget /* xw */); 1126 #endif 1127 #endif 1128 1129 /* input.c */ 1130 extern unsigned xtermParamToState (XtermWidget /* xw */, unsigned /* param */); 1131 extern unsigned xtermStateToParam (XtermWidget /* xw */, unsigned /* state */); 1132 extern Bool xtermDeleteIsDEL (XtermWidget /* xw */); 1133 extern void Input (XtermWidget /* xw */, XKeyEvent */* event */, Bool /* eightbit */); 1134 extern void StringInput (XtermWidget /* xw */, const Char * /* string */, size_t /* nbytes */); 1135 1136 #if OPT_NUM_LOCK 1137 extern void VTInitModifiers(XtermWidget /* xw */); 1138 #else 1139 #define VTInitModifiers(xw) /* nothing */ 1140 #endif 1141 1142 /* linedata.c */ 1143 extern LineData *getLineData(TScreen * /* screen */, int /* row */); 1144 extern void copyLineData(LineData * /* dst */, CLineData * /* src */); 1145 extern void initLineData(XtermWidget /* xw */); 1146 1147 extern CellData *newCellData(XtermWidget /* xw */, Cardinal /* count */); 1148 extern void saveCellData(TScreen * /* screen */, CellData * /* data */, Cardinal /* cell */, CLineData * /* ld */, XTermRect * /* limits */, int /* column */); 1149 extern void restoreCellData(TScreen * /* screen */, const CellData * /* data */, Cardinal /* cell */, LineData * /* ld */, XTermRect * /* limits */, int /* column */); 1150 1151 /* main.c */ 1152 #define ENVP_ARG /**/ 1153 1154 extern int main (int /* argc */, char ** /* argv */ ENVP_ARG); 1155 extern int GetBytesAvailable (int /* fd */); 1156 extern int kill_process_group (int /* pid */, int /* sig */); 1157 extern int nonblocking_wait (void); 1158 1159 extern int get_tty_erase(int /* fd */, int /* default_erase */, const char * /* tag */); 1160 extern int get_tty_lnext(int /* fd */, int /* default_lnext */, const char * /* tag */); 1161 1162 #if OPT_PTY_HANDSHAKE 1163 extern void first_map_occurred (void); 1164 #else 1165 #define first_map_occurred() /* nothing */ 1166 #endif 1167 1168 extern GCC_NORETURN void Exit (int /* n */); 1169 1170 #ifndef SIG_ATOMIC_T 1171 #define SIG_ATOMIC_T int 1172 #endif 1173 1174 #if OPT_WIDE_CHARS 1175 extern unsigned first_widechar; 1176 extern int (*my_wcwidth)(wchar_t); 1177 #endif 1178 1179 /* menu.c */ 1180 extern void do_hangup PROTO_XT_CALLBACK_ARGS; 1181 extern void repairSizeHints (void); 1182 extern void show_8bit_control (Bool /* value */); 1183 1184 /* misc.c */ 1185 1186 #define TIMESTAMP_LEN 20 /* length of TIMESTAMP_FMT */ 1187 1188 extern Bool AllocateTermColor(XtermWidget, ScrnColors *, int, const char *, Bool); 1189 extern Boolean allocateBestRGB(XtermWidget /* xw */, XColor * /* def */); 1190 extern Boolean validProgram(const char * /* pathname */); 1191 extern Boolean xtermGetWinAttrs(Display * /* dpy */, Window /* win */, XWindowAttributes * /* attrs */); 1192 extern Boolean xtermGetWinProp(Display * /* dpy */, Window /* win */, Atom /* property */, long /* long_offset */, long /* long_length */, Atom /* req_type */, Atom * /* actual_type_return */, int * /* actual_format_return */, unsigned long * /* nitems_return */, unsigned long * /* bytes_after_return */, unsigned char ** /* prop_return */); 1193 extern Boolean xtermIsIconified (XtermWidget /* xw */); 1194 extern Cursor make_colored_cursor (unsigned /* cursorindex */, unsigned long /* fg */, unsigned long /* bg */); 1195 extern FILE * create_printfile(XtermWidget /* xw */, const char * /* suffix */); 1196 extern OptionHelp * sortedOpts(OptionHelp *, XrmOptionDescRec *, Cardinal); 1197 extern String xtermEnvLocale (void); 1198 extern Widget xtermOpenApplication (XtAppContext * /* app_context_return */, String /* application_class */, XrmOptionDescRec */* options */, Cardinal /* num_options */, int * /* argc_in_out */, char **/* argv_in_out */, String * /* fallback_resources */, WidgetClass /* widget_class */, ArgList /* args */, Cardinal /* num_args */); 1199 extern Window WMFrameWindow (XtermWidget /* xw */); 1200 extern XtInputMask xtermAppPending (void); 1201 extern XrmOptionDescRec * sortedOptDescs (XrmOptionDescRec *, Cardinal); 1202 extern XtermWidget getXtermWidget (Widget /* w */); 1203 extern XVisualInfo *getVisualInfo (XtermWidget /* xw */); 1204 extern char *udk_lookup (XtermWidget /* xw */, int /* keycode */, int * /* len */); 1205 extern char *xtermEnvEncoding (void); 1206 extern char *xtermFindShell (char * /* leaf */, Bool /* warning */); 1207 extern char *xtermFormatSGR (XtermWidget /* xw */, char * /* target */, unsigned /* attrs */, int /* fg */, int /* bg */); 1208 extern const char *SysErrorMsg (int /* n */); 1209 extern const char *SysReasonMsg (int /* n */); 1210 extern int ResetAnsiColorRequest (XtermWidget, char *, int); 1211 extern int XStrCmp (char * /* s1 */, char * /* s2 */); 1212 extern int creat_as (uid_t /* uid */, gid_t /* gid */, Bool /* append */, char * /* pathname */, unsigned /* mode */); 1213 extern int getVisualDepth (XtermWidget /* xw */); 1214 extern int ignore_x11_error(Display * /* dpy */, XErrorEvent * /* event */); 1215 extern int open_userfile (uid_t /* uid */, gid_t /* gid */, char * /* path */, Bool /* append */); 1216 extern int update_winsize (TScreen * /* screen */, int /* rows */, int /* cols */, int /* height */, int /* width */); 1217 extern int xerror (Display * /* d */, XErrorEvent * /* ev */); 1218 extern int xioerror (Display * /* dpy */); 1219 extern int xtermClosestColor (XtermWidget /* xw */, int /* red */, int /* green */, int /* blue */); 1220 extern int xtermResetIds (TScreen * /* screen */); 1221 extern void Bell (XtermWidget /* xw */, int /* which */, int /* percent */); 1222 extern void ChangeGroup(XtermWidget /* xw */, const char * /* attribute */, char * /* value */); 1223 extern void ChangeIconName (XtermWidget /* xw */, char * /* name */); 1224 extern void ChangeTitle (XtermWidget /* xw */, char * /* name */); 1225 extern void ChangeXprop (char * /* name */); 1226 extern GCC_NORETURN void Cleanup (int /* code */); 1227 extern void HandleBellPropertyChange PROTO_XT_EV_HANDLER_ARGS; 1228 extern void HandleEightBitKeyPressed PROTO_XT_ACTIONS_ARGS; 1229 extern void HandleEnterWindow PROTO_XT_EV_HANDLER_ARGS; 1230 extern void HandleFocusChange PROTO_XT_EV_HANDLER_ARGS; 1231 extern void HandleInterpret PROTO_XT_ACTIONS_ARGS; 1232 extern void HandleKeyPressed PROTO_XT_ACTIONS_ARGS; 1233 extern void HandleLeaveWindow PROTO_XT_EV_HANDLER_ARGS; 1234 extern void HandleSpawnTerminal PROTO_XT_ACTIONS_ARGS; 1235 extern void HandleStringEvent PROTO_XT_ACTIONS_ARGS; 1236 extern void NormalExit (void); 1237 extern void Panic (const char * /* s */, int /* a */); 1238 extern void Redraw (void); 1239 extern void ReverseOldColors (XtermWidget /* xw */); 1240 extern GCC_NORETURN void SysError (int /* i */); 1241 extern void VisualBell (void); 1242 extern void cleanup_colored_cursor (void); 1243 extern void do_ansi_rqm (XtermWidget /* xw */, int /* nparam */, int * /* params */); 1244 extern void do_dcs (XtermWidget /* xw */, Char * /* buf */, size_t /* len */); 1245 extern void do_dec_rqm (XtermWidget /* xw */, int /* nparam */, int * /* params */); 1246 extern void do_osc (XtermWidget /* xw */, Char * /* buf */, size_t /* len */, int /* final */); 1247 extern void do_xevents (XtermWidget /* xw */); 1248 extern void end_tek_mode (void); 1249 extern void end_vt_mode (void); 1250 extern void free_string(String value); 1251 extern void hide_tek_window (void); 1252 extern void hide_vt_window (void); 1253 extern GCC_NORETURN void ice_error (IceConn /* iceConn */); 1254 extern void init_colored_cursor (Display * /* dpy */); 1255 extern void reset_decudk (XtermWidget /* xw */); 1256 extern void set_tek_visibility (Bool /* on */); 1257 extern void set_vt_visibility (Bool /* on */); 1258 extern void switch_modes (Bool /* tovt */); 1259 extern void timestamp_filename(char * /* dst */, const char * /* src */); 1260 extern void xevents (XtermWidget /* xw */); 1261 extern GCC_NORETURN void xt_error (String /* message */); 1262 extern void xtermBell(XtermWidget /* xw */, int /* which */, int /* percent */); 1263 extern void xtermCopyEnv (char ** /* oldenv */); 1264 extern void xtermDisplayPointer (XtermWidget /* xw */); 1265 extern void xtermDeiconify (XtermWidget /* xw */); 1266 extern void xtermEmbedWindow (Window /* winToEmbedInfo */); 1267 extern void xtermIconify (XtermWidget /* xw */); 1268 extern void xtermLoadIcon (XtermWidget /* xw */, const char * /* icon_hint */); 1269 extern void xtermPerror (const char * /*fmt*/,...) GCC_PRINTFLIKE(1,2); 1270 extern void xtermSetenv (const char * /* var */, const char * /* value */); 1271 extern void xtermSetupPointer (XtermWidget /* xw */, const char * /* theShape */); 1272 extern void xtermSetWinSize (XtermWidget /* xw */); 1273 extern void xtermShowPointer (XtermWidget /* xw */, Bool /* enable */); 1274 extern void xtermUnsetenv (const char * /* var */); 1275 extern void xtermWarning (const char * /*fmt*/,...) GCC_PRINTFLIKE(1,2); 1276 1277 #if OPT_DABBREV 1278 extern void HandleDabbrevExpand PROTO_XT_ACTIONS_ARGS; 1279 #endif 1280 1281 #if OPT_DIRECT_COLOR 1282 extern int getDirectColor(XtermWidget /* xw */, int /* red */, int /* green */, int /* blue */); 1283 #endif /* OPT_DIRECT_COLOR */ 1284 1285 #if USE_DOUBLE_BUFFER 1286 extern void xtermFlushDbe(XtermWidget /* xw */); 1287 extern void xtermTimedDbe(XtermWidget /* xw */); 1288 #define xtermNeedSwap(xw,why) TScreenOf(xw)->needSwap |= (why) 1289 #else 1290 #define xtermFlushDbe(xw) /* nothing */ 1291 #define xtermTimedDbe(xw) /* nothing */ 1292 #define xtermNeedSwap(xw,why) /* nothing */ 1293 #endif /* USE_DOUBLE_BUFFER */ 1294 1295 #if OPT_EXEC_XTERM 1296 extern char *ProcGetCWD(pid_t /* pid */); 1297 #else 1298 #define ProcGetCWD(pid) NULL 1299 #endif 1300 1301 #if OPT_ISO_COLORS 1302 extern Boolean AllocOneColor(XtermWidget /* xw */, XColor * /* def */); 1303 extern Boolean QueryOneColor(XtermWidget /* xw */, XColor * /* def */); 1304 #else 1305 #define AllocOneColor(xw, def) ((def)->pixel = 0) 1306 #define QueryOneColor(xw, def) ((def)->red = (def)->green = (def)->blue = 0) 1307 #endif 1308 1309 #if OPT_MAXIMIZE 1310 extern int QueryMaximize (XtermWidget /* xw */, unsigned * /* width */, unsigned * /* height */); 1311 extern void HandleDeIconify PROTO_XT_ACTIONS_ARGS; 1312 extern void HandleIconify PROTO_XT_ACTIONS_ARGS; 1313 extern void HandleMaximize PROTO_XT_ACTIONS_ARGS; 1314 extern void HandleRestoreSize PROTO_XT_ACTIONS_ARGS; 1315 extern void RequestMaximize (XtermWidget /* xw */, int /* maximize */); 1316 #endif 1317 1318 #if OPT_REPORT_ICONS 1319 extern void report_icons(const char *fmt,...) GCC_PRINTFLIKE(1,2); 1320 #define ReportIcons(params) report_icons params 1321 #else 1322 #define ReportIcons(params) TRACE(params) 1323 #endif 1324 1325 #if OPT_SCROLL_LOCK 1326 extern void GetScrollLock (TScreen * /* screen */); 1327 extern void HandleScrollLock PROTO_XT_ACTIONS_ARGS; 1328 extern void ShowScrollLock (TScreen * /* screen */, Bool /* enable */); 1329 extern void SetScrollLock (TScreen * /* screen */, Bool /* enable */); 1330 extern void xtermShowLED (TScreen * /* screen */, Cardinal /* led_number */, Bool /* enable */); 1331 extern void xtermClearLEDs (TScreen * /* screen */); 1332 #else 1333 #define ShowScrollLock(screen, enable) /* nothing */ 1334 #define SetScrollLock(screen, enable) /* nothing */ 1335 #define GetScrollLock(screen) /* nothing */ 1336 #endif 1337 1338 #if OPT_SELECTION_OPS 1339 extern void HandleExecFormatted PROTO_XT_ACTIONS_ARGS; 1340 extern void HandleExecSelectable PROTO_XT_ACTIONS_ARGS; 1341 extern void HandleInsertFormatted PROTO_XT_ACTIONS_ARGS; 1342 extern void HandleInsertSelectable PROTO_XT_ACTIONS_ARGS; 1343 #endif 1344 1345 #if OPT_SESSION_MGT 1346 extern void xtermCloseSession (void); 1347 extern void xtermOpenSession (void); 1348 extern void xtermUpdateRestartCommand(XtermWidget /* xw */); 1349 #else 1350 #define xtermCloseSession() /* nothing */ 1351 #define xtermOpenSession() /* nothing */ 1352 #define xtermUpdateRestartCommand(xw) /* nothing */ 1353 #endif 1354 1355 #if OPT_WIDE_CHARS 1356 extern Bool xtermEnvUTF8(void); 1357 #else 1358 #define xtermEnvUTF8() False 1359 #endif 1360 1361 #if OPT_XTERM_SGR 1362 extern void xtermPushSGR (XtermWidget /* xw */, int /* value */); 1363 extern void xtermPopSGR (XtermWidget /* xw */); 1364 extern void xtermReportSGR (XtermWidget /* xw */, XTermRect * /* value */); 1365 extern void xtermPushColors (XtermWidget /* xw */, int /* value */); 1366 extern void xtermPopColors (XtermWidget /* xw */, int /* value */); 1367 extern void xtermReportColors (XtermWidget /* xw */); 1368 #endif 1369 1370 #ifdef ALLOWLOGGING 1371 extern void StartLog (XtermWidget /* xw */); 1372 extern void CloseLog (XtermWidget /* xw */); 1373 extern void FlushLog (XtermWidget /* xw */); 1374 #else 1375 #define FlushLog(xw) /*nothing*/ 1376 #endif 1377 1378 /* print.c */ 1379 extern Bool xtermHasPrinter (XtermWidget /* xw */); 1380 extern PrinterFlags *getPrinterFlags (XtermWidget /* xw */, String * /* params */, Cardinal * /* param_count */); 1381 extern int xtermPrinterControl (XtermWidget /* xw */, int /* chr */); 1382 extern void setPrinterControlMode (XtermWidget /* xw */, int /* mode */); 1383 extern void xtermAutoPrint (XtermWidget /* xw */, unsigned /* chr */); 1384 extern void xtermMediaControl (XtermWidget /* xw */, int /* param */, int /* private_seq */); 1385 extern void xtermPrintScreen (XtermWidget /* xw */, Bool /* use_DECPEX */, PrinterFlags * /* p */); 1386 extern void xtermPrintEverything (XtermWidget /* xw */, PrinterFlags * /* p */); 1387 extern void xtermPrintImmediately (XtermWidget /* xw */, String /* filename */, int /* opts */, int /* attributes */); 1388 extern void xtermPrintOnXError (XtermWidget /* xw */, int /* n */); 1389 1390 #if OPT_SCREEN_DUMPS 1391 /* html.c */ 1392 extern void xtermDumpHtml (XtermWidget /* xw */); 1393 extern char *PixelToCSSColor(XtermWidget /* xw */, Pixel /* p */); 1394 /* svg.c */ 1395 extern void xtermDumpSvg (XtermWidget /* xw */); 1396 #endif 1397 1398 /* ptydata.c */ 1399 #ifdef VMS 1400 #define PtySelect int 1401 #else 1402 #define PtySelect fd_set 1403 #endif 1404 1405 extern Bool decodeUtf8 (TScreen * /* screen */, PtyData * /* data */); 1406 extern int readPtyData (XtermWidget /* xw */, PtySelect * /* select_mask */, PtyData * /* data */); 1407 extern void fillPtyData (XtermWidget /* xw */, PtyData * /* data */, const char * /* value */, size_t /* length */); 1408 extern void initPtyData (PtyData ** /* data */); 1409 extern void trimPtyData (XtermWidget /* xw */, PtyData * /* data */); 1410 1411 #ifdef NO_LEAKS 1412 extern void noleaks_ptydata ( void ); 1413 #endif 1414 1415 #if OPT_WIDE_CHARS 1416 extern Boolean isValidUTF8 (Char * /* lp */); 1417 extern Char *convertToUTF8 (Char * /* lp */, unsigned /* c */); 1418 extern Char *convertFromUTF8 (Char * /* lp */, unsigned * /* cp */); 1419 extern IChar nextPtyData (TScreen * /* screen */, PtyData * /* data */); 1420 extern PtyData * fakePtyData (PtyData * /* result */, Char * /* next */, Char * /* last */); 1421 extern void switchPtyData (TScreen * /* screen */, int /* f */); 1422 extern void writePtyData (int /* f */, IChar * /* d */, size_t /* len */); 1423 1424 #define morePtyData(screen, data) \ 1425 (((data)->last > (data)->next) \ 1426 ? (((screen)->utf8_inparse && !(data)->utf_size) \ 1427 ? decodeUtf8(screen, data) \ 1428 : True) \ 1429 : False) 1430 1431 #define skipPtyData(data, result) \ 1432 do { \ 1433 result = (data)->utf_data; \ 1434 (data)->next += (data)->utf_size; \ 1435 (data)->utf_size = 0; \ 1436 } while (0) 1437 #else 1438 #define morePtyData(screen, data) ((data)->last > (data)->next) 1439 #define nextPtyData(screen, data) (IChar) (*((data)->next++) & \ 1440 (screen->output_eight_bits \ 1441 ? 0xff \ 1442 : 0x7f)) 1443 #define writePtyData(f,d,len) v_write(f,d,len) 1444 #endif 1445 1446 /* screen.c */ 1447 1448 /* 1449 * See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html 1450 */ 1451 #define _NET_WM_STATE_REMOVE 0 /* remove/unset property */ 1452 #define _NET_WM_STATE_ADD 1 /* add/set property */ 1453 #define _NET_WM_STATE_TOGGLE 2 /* toggle property */ 1454 1455 extern Bool non_blank_line (TScreen */* screen */, int /* row */, int /* col */, int /* len */); 1456 extern Char * allocScrnData (TScreen * /* screen */, unsigned /* nrow */, unsigned /* ncol */, Bool /* bottom */); 1457 extern ScrnBuf allocScrnBuf (XtermWidget /* xw */, unsigned /* nrow */, unsigned /* ncol */, ScrnPtr * /* addr */); 1458 extern ScrnBuf scrnHeadAddr (TScreen * /* screen */, ScrnBuf /* base */, unsigned /* offset */); 1459 extern size_t ScrnPointers (TScreen * /* screen */, size_t /* len */); 1460 extern void ClearBufRows (XtermWidget /* xw */, int /* first */, int /* last */); 1461 extern void ClearCells (XtermWidget /* xw */, int /* flags */, unsigned /* len */, int /* row */, int /* col */); 1462 extern void CopyCells (TScreen * /* screen */, LineData * /* src */, LineData * /* dst */, int /* col */, int /* len */, Bool /* down */); 1463 extern void FullScreen (XtermWidget /* xw */, int /* mode */); 1464 extern void FreeMarkGCs (XtermWidget /* xw */); 1465 extern void ScreenResize (XtermWidget /* xw */, int /* width */, int /* height */, unsigned * /* flags */); 1466 extern void ScrnAllocBuf (XtermWidget /* xw */); 1467 extern void ScrnClearCells (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */); 1468 extern void ScrnDeleteChar (XtermWidget /* xw */, unsigned /* n */); 1469 extern void ScrnDeleteCol (XtermWidget /* xw */, unsigned /* n */); 1470 extern void ScrnDeleteLine (XtermWidget /* xw */, ScrnBuf /* sb */, int /* n */, int /* last */, unsigned /* where */); 1471 extern void ScrnDisownSelection (XtermWidget /* xw */); 1472 extern void ScrnFillRectangle (XtermWidget /* xw */, XTermRect *, int , unsigned /* flags */, Bool /* keepColors */); 1473 extern void ScrnInsertChar (XtermWidget /* xw */, unsigned /* n */); 1474 extern void ScrnInsertCol (XtermWidget /* xw */, unsigned /* n */); 1475 extern void ScrnInsertLine (XtermWidget /* xw */, ScrnBuf /* sb */, int /* last */, int /* where */, unsigned /* n */); 1476 extern void ScrnRefresh (XtermWidget /* xw */, int /* toprow */, int /* leftcol */, int /* nrows */, int /* ncols */, Bool /* force */); 1477 extern void ScrnUpdate (XtermWidget /* xw */, int /* toprow */, int /* leftcol */, int /* nrows */, int /* ncols */, Bool /* force */); 1478 extern void ScrnWriteText (XtermWidget /* xw */, IChar * /* str */, unsigned /* flags */, CellColor /* cur_fg_bg */, unsigned /* length */); 1479 extern void ShowWrapMarks (XtermWidget /* xw */, int /* row */, CLineData * /* ld */); 1480 extern void setupLineData (TScreen * /* screen */, ScrnBuf /* base */, Char * /* data */, unsigned /* nrow */, unsigned /* ncol */, Bool /* bottom */); 1481 extern void xtermParseRect (XtermWidget /* xw */, int, int *, XTermRect *); 1482 1483 #if OPT_TRACE && OPT_TRACE_FLAGS 1484 extern int LineTstFlag(LineData /* ld */, int /* flag */); 1485 extern void LineClrFlag(LineData /* ld */, int /* flag */); 1486 extern void LineSetFlag(LineData /* ld */, int /* flag */); 1487 #else 1488 1489 #define LineFlags(ld) GetLineFlags(ld) 1490 1491 #define LineClrFlag(ld, flag) SetLineFlags(ld, (GetLineFlags(ld) & ~ (flag))) 1492 #define LineSetFlag(ld, flag) SetLineFlags(ld, (GetLineFlags(ld) | (flag))) 1493 #define LineTstFlag(ld, flag) ((GetLineFlags(ld) & flag) != 0) 1494 1495 #endif /* OPT_TRACE && OPT_TRACE_FLAGS */ 1496 1497 #define LineClrBlinked(ld) LineClrFlag(ld, LINEBLINKED) 1498 #define LineSetBlinked(ld) LineSetFlag(ld, LINEBLINKED) 1499 #define LineTstBlinked(ld) LineTstFlag(ld, LINEBLINKED) 1500 1501 #define LineClrWrapped(ld) LineClrFlag(ld, LINEWRAPPED) 1502 #define LineSetWrapped(ld) LineSetFlag(ld, LINEWRAPPED) 1503 #define LineTstWrapped(ld) LineTstFlag(ld, LINEWRAPPED) 1504 1505 #define ScrnHaveSelection(screen) \ 1506 ((screen)->startH.row != (screen)->endH.row \ 1507 || (screen)->startH.col != (screen)->endH.col) 1508 1509 #define ScrnAreRowsInSelection(screen, first, last) \ 1510 ((last) >= (screen)->startH.row && (first) <= (screen)->endH.row) 1511 1512 #define ScrnIsRowInSelection(screen, line) \ 1513 ((line) >= (screen)->startH.row && (line) <= (screen)->endH.row) 1514 1515 #define ScrnHaveRowMargins(screen) \ 1516 ((screen)->top_marg != 0 \ 1517 || ((screen)->bot_marg != screen->max_row)) 1518 1519 #define ScrnIsRowInMargins(screen, line) \ 1520 ((line) >= (screen)->top_marg && (line) <= (screen)->bot_marg) 1521 1522 #define ScrnHaveColMargins(screen) \ 1523 ((screen)->rgt_marg > (screen)->max_col) 1524 1525 #define ScrnIsColInMargins(screen, col) \ 1526 ((col) >= (screen)->lft_marg && (col) <= (screen)->rgt_marg) 1527 1528 /* 1529 * If the vertical scrolling margins are active, they will be something other 1530 * than the first/last row of the visible screen, as well as being distinct. 1531 */ 1532 #define IsTopBottomMode(xw) (ScrnTopMargin(xw) < ScrnBottomMargin(xw)) 1533 #define ScrnTopMargin(xw) TScreenOf(xw)->top_marg 1534 #define ScrnBottomMargin(xw) TScreenOf(xw)->bot_marg 1535 1536 /* 1537 * Left/right horizontal scrolling margins are only active when DECLRMM is. 1538 */ 1539 #define IsLeftRightMode(xw) ((xw)->flags & LEFT_RIGHT) 1540 #define ScrnLeftMargin(xw) (IsLeftRightMode(xw) \ 1541 ? TScreenOf(xw)->lft_marg \ 1542 : 0) 1543 #define ScrnRightMargin(xw) (IsLeftRightMode(xw) \ 1544 ? TScreenOf(xw)->rgt_marg \ 1545 : MaxCols(TScreenOf(xw)) - 1) 1546 1547 #if OPT_DEC_RECTOPS 1548 extern void ScrnCopyRectangle (XtermWidget /* xw */, XTermRect *, int, int *); 1549 extern void ScrnMarkRectangle (XtermWidget /* xw */, XTermRect *, Bool, int, int *); 1550 extern void ScrnWipeRectangle (XtermWidget /* xw */, XTermRect *); 1551 extern void xtermCheckRect(XtermWidget /* xw */, int /* nparam */, int */* params */, int * /* result */); 1552 #endif 1553 1554 #if OPT_WIDE_CHARS 1555 extern void ChangeToWide(XtermWidget /* xw */); 1556 #endif 1557 1558 /* scrollback.c */ 1559 extern LineData *getScrollback (TScreen * /* screen */, int /* row */); 1560 extern LineData *addScrollback (TScreen * /* screen */); 1561 extern void deleteScrollback (TScreen * /* screen */); 1562 1563 /* scrollbar.c */ 1564 extern void DoResizeScreen (XtermWidget /* xw */); 1565 extern void HandleScrollBack PROTO_XT_ACTIONS_ARGS; 1566 extern void HandleScrollForward PROTO_XT_ACTIONS_ARGS; 1567 extern void HandleScrollTo PROTO_XT_ACTIONS_ARGS; 1568 extern void ResizeScrollBar (XtermWidget /* xw */); 1569 extern void ScrollBarDrawThumb (XtermWidget /* xw */, int /* mode */); 1570 extern void ScrollBarOff (XtermWidget /* xw */); 1571 extern void ScrollBarOn (XtermWidget /* xw */, Bool /* init */); 1572 extern void ScrollBarReverseVideo (Widget /* scrollWidget */); 1573 extern void ToggleScrollBar (XtermWidget /* xw */); 1574 extern void WindowScroll (XtermWidget /* xw */, int /* top */, Bool /* always */); 1575 1576 #ifdef SCROLLBAR_RIGHT 1577 extern void updateRightScrollbar(XtermWidget /* xw */); 1578 #else 1579 #define updateRightScrollbar(xw) /* nothing */ 1580 #endif 1581 1582 /* tabs.c */ 1583 extern Bool TabToNextStop (XtermWidget /* xw */); 1584 extern Bool TabToPrevStop (XtermWidget /* xw */); 1585 extern void TabClear (Tabs /* tabs */, int /* col */); 1586 extern void TabReset (Tabs /* tabs */); 1587 extern void TabSet (Tabs /* tabs */, int /* col */); 1588 extern void TabZonk (Tabs /* tabs */); 1589 extern Bool TabIsSet (Tabs /* tabs */, int /* col */); 1590 1591 /* util.c */ 1592 extern Boolean isDefaultBackground (const char * /* name */); 1593 extern Boolean isDefaultForeground (const char * /* name */); 1594 extern CgsEnum whichXtermCgs (XtermWidget /* xw */, unsigned /* attr_flags */, Bool /* hilite */); 1595 extern GC updatedXtermGC (XtermWidget /* xw */, unsigned /* flags */, CellColor /* fg_bg */, Bool /* hilite */); 1596 extern Pixel getXtermBackground (XtermWidget /* xw */, unsigned /* flags */, int /* color */); 1597 extern Pixel getXtermForeground (XtermWidget /* xw */, unsigned /* flags */, int /* color */); 1598 extern char * xtermSetLocale (int /* category */, String /* after */); 1599 extern int ClearInLine (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */); 1600 extern int HandleExposure (XtermWidget /* xw */, XEvent * /* event */); 1601 extern int dimRound (double /* value */); 1602 extern int drawXtermText (XTermDraw * /* param */, GC /* gc */, int /* x */, int /* y */, const IChar * /* text */, Cardinal /* len */); 1603 extern int extendedBoolean (const char * /* value */, const FlagList * /* table */, Cardinal /* limit */); 1604 extern void ChangeColors (XtermWidget /* xw */, ScrnColors * /* pNew */); 1605 extern void ClearLine (XtermWidget /* xw */); 1606 extern void ClearRight (XtermWidget /* xw */, int /* n */); 1607 extern void ClearScreen (XtermWidget /* xw */); 1608 extern void DeleteChar (XtermWidget /* xw */, unsigned /* n */); 1609 extern void DeleteLine (XtermWidget /* xw */, int /* n */, Bool /* canSave */); 1610 extern void FlushScroll (XtermWidget /* xw */); 1611 extern void GetColors (XtermWidget /* xw */, ScrnColors * /* pColors */); 1612 extern void InsertChar (XtermWidget /* xw */, unsigned /* n */); 1613 extern void InsertLine (XtermWidget /* xw */, int /* n */); 1614 extern void RevScroll (XtermWidget /* xw */, int /* amount */); 1615 extern void ReverseVideo (XtermWidget /* xw */); 1616 extern void WriteText (XtermWidget /* xw */, IChar * /* str */, Cardinal /* len */); 1617 extern void decode_keyboard_type (XtermWidget /* xw */, struct XTERM_RESOURCE * /* rp */); 1618 extern void decode_wcwidth (XtermWidget /* xw */); 1619 extern void do_cd_xtra_scroll (XtermWidget /* xw */, int /* param */); 1620 extern void do_erase_display (XtermWidget /* xw */, int /* param */, int /* mode */); 1621 extern void do_erase_char (XtermWidget /* xw */, int /* param */, int /* mode */); 1622 extern void do_erase_line (XtermWidget /* xw */, int /* param */, int /* mode */); 1623 extern void do_ti_xtra_scroll (XtermWidget /* xw */); 1624 extern void getXtermSizeHints (XtermWidget /* xw */); 1625 extern void recolor_cursor (TScreen * /* screen */, Cursor /* cursor */, unsigned long /* fg */, unsigned long /* bg */); 1626 extern void resetXtermGC (XtermWidget /* xw */, unsigned /* flags */, Bool /* hilite */); 1627 extern void scrolling_copy_area (XtermWidget /* xw */, int /* firstline */, int /* nlines */, int /* amount */); 1628 extern void set_keyboard_type (XtermWidget /* xw */, xtermKeyboardType /* type */, Bool /* set */); 1629 extern void toggle_keyboard_type (XtermWidget /* xw */, xtermKeyboardType /* type */); 1630 extern void update_keyboard_type (void); 1631 extern void xtermClear (XtermWidget /* xw */); 1632 extern void xtermClear2 (XtermWidget /* xw */, int /* x */, int /* y */, unsigned /* width */, unsigned /* height */); 1633 extern void xtermColIndex (XtermWidget /* xw */, Bool /* toLeft */); 1634 extern void xtermColScroll (XtermWidget /* xw */, int /* amount */, Bool /* toLeft */, int /* at_col */); 1635 extern void xtermRepaint (XtermWidget /* xw */); 1636 extern void xtermResetLocale (int /* category */, char * /* before */); 1637 extern void xtermScroll (XtermWidget /* xw */, int /* amount */); 1638 extern void xtermScrollLR (XtermWidget /* xw */, int /* amount */, Bool /* toLeft */); 1639 extern void xtermSizeHints (XtermWidget /* xw */, int /* scrollbarWidth */); 1640 1641 struct Xinerama_geometry { 1642 int x; 1643 int y; 1644 unsigned w; 1645 unsigned h; 1646 int scr_x; 1647 int scr_y; 1648 int scr_w; 1649 int scr_h; 1650 }; 1651 extern int XParseXineramaGeometry(Display * /* display */, char * /* parsestring */, struct Xinerama_geometry * /* ret */); 1652 1653 #if OPT_ISO_COLORS 1654 1655 extern Pixel extract_fg (XtermWidget /* xw */, CellColor /* color */, unsigned /* flags */); 1656 extern Pixel extract_bg (XtermWidget /* xw */, CellColor /* color */, unsigned /* flags */); 1657 extern CellColor makeColorPair (XtermWidget /* xw */); 1658 extern void ClearCurBackground (XtermWidget /* xw */, int /* top */, int /* left */, unsigned /* height */, unsigned /* width */, unsigned /* fw */); 1659 1660 #define xtermColorPair(xw) makeColorPair(xw) 1661 1662 #define GET_COLOR_RES(xw, res) xtermGetColorRes(xw, &(res)) 1663 #define SET_COLOR_RES(res,color) (res)->value = color 1664 #define EQL_COLOR_RES(res,color) (res)->value == color 1665 #define T_COLOR(v,n) (v)->Tcolors[n].value 1666 extern Pixel xtermGetColorRes(XtermWidget /* xw */, ColorRes * /* res */); 1667 1668 #define ExtractForeground(color) (unsigned) GetCellColorFG(color) 1669 #define ExtractBackground(color) (unsigned) GetCellColorBG(color) 1670 1671 #if OPT_RENDERFONT 1672 extern void discardRenderDraw(TScreen * /* screen */); 1673 #else 1674 #define discardRenderDraw(screen) /* nothing */ 1675 #endif 1676 1677 #if OPT_WIDE_ATTRS 1678 #define MapToWideColorMode(fg, screen, flags) \ 1679 (((screen)->colorITMode && ((flags) & ATR_ITALIC)) \ 1680 ? COLOR_IT \ 1681 : fg) 1682 #else 1683 #define MapToWideColorMode(fg, screen, flags) fg 1684 #endif 1685 1686 #define MapToColorMode(fg, screen, flags) \ 1687 (((screen)->colorBLMode && ((flags) & BLINK)) \ 1688 ? COLOR_BL \ 1689 : (((screen)->colorBDMode && ((flags) & BOLD)) \ 1690 ? COLOR_BD \ 1691 : (((screen)->colorULMode && ((flags) & UNDERLINE)) \ 1692 ? COLOR_UL \ 1693 : MapToWideColorMode(fg, screen, flags)))) 1694 1695 #define checkVeryBoldAttr(flags, fg, code, attr) \ 1696 if ((flags & FG_COLOR) != 0 \ 1697 && (screen->veryBoldColors & attr) == 0 \ 1698 && (flags & attr) != 0 \ 1699 && (fg == code)) \ 1700 UIntClr(flags, attr) 1701 1702 #if OPT_WIDE_ATTRS 1703 #define checkVeryBoldWideAttr(flags, fg, it, atr) \ 1704 checkVeryBoldAttr(flags, fg, it, atr) 1705 #else 1706 #define checkVeryBoldWideAttr(flags, fg, it, atr) (void) flags 1707 #endif 1708 1709 #define checkVeryBoldColors(flags, fg) \ 1710 checkVeryBoldAttr(flags, fg, COLOR_RV, INVERSE); \ 1711 checkVeryBoldAttr(flags, fg, COLOR_UL, UNDERLINE); \ 1712 checkVeryBoldAttr(flags, fg, COLOR_BD, BOLD); \ 1713 checkVeryBoldAttr(flags, fg, COLOR_BL, BLINK); \ 1714 checkVeryBoldWideAttr(flags, fg, COLOR_IT, ATR_ITALIC) 1715 1716 #else /* !OPT_ISO_COLORS */ 1717 1718 #define MapToColorMode(fg, screen, flags) fg 1719 1720 #define ClearCurBackground(xw, top, left, height, width, fw) \ 1721 XClearArea (TScreenOf(xw)->display, \ 1722 VDrawable(TScreenOf(xw)), \ 1723 CursorX2(TScreenOf(xw), left, fw), \ 1724 CursorY2(TScreenOf(xw), top), \ 1725 ((width) * (unsigned) fw), \ 1726 ((height) * (unsigned) FontHeight(TScreenOf(xw))), \ 1727 False) 1728 1729 #define extract_fg(xw, color, flags) (unsigned) (xw)->cur_foreground 1730 #define extract_bg(xw, color, flags) (unsigned) (xw)->cur_background 1731 1732 /* FIXME: Reverse-Video? */ 1733 #define T_COLOR(v,n) (v)->Tcolors[n].value 1734 #define xtermColorPair(xw) 0 1735 1736 #define checkVeryBoldColors(flags, fg) /* nothing */ 1737 #define discardRenderDraw(screen) /* nothing */ 1738 1739 #endif /* OPT_ISO_COLORS */ 1740 1741 #define getXtermFG(xw, flags, color) getXtermForeground(xw, flags, color) 1742 #define getXtermBG(xw, flags, color) getXtermBackground(xw, flags, color) 1743 1744 #if OPT_ZICONBEEP 1745 extern void initZIconBeep(void); 1746 extern void resetZIconBeep(XtermWidget /* xw */); 1747 extern Boolean showZIconBeep(XtermWidget /* xw */, char * /* name */); 1748 #else 1749 #define initZIconBeep() /* nothing */ 1750 #define resetZIconBeep(xw) /* nothing */ 1751 #define showZIconBeep(xw, name) False 1752 #endif 1753 1754 #define XTERM_CELL(row,col) getXtermCell(screen, ROW2INX(screen, row), col) 1755 1756 extern unsigned getXtermCell (TScreen * /* screen */, int /* row */, int /* col */); 1757 extern unsigned getXtermCombining(TScreen * /* screen */, int /* row */, int /* col */, int /* off */); 1758 extern void putXtermCell (TScreen * /* screen */, int /* row */, int /* col */, int /* ch */); 1759 1760 #define IsCellCombined(screen, row, col) (getXtermCombining(screen, row, col, 0) != 0) 1761 1762 #if OPT_HIGHLIGHT_COLOR 1763 #define isNotForeground(xw, fg, bg, sel) \ 1764 (Boolean) ((sel) != T_COLOR(TScreenOf(xw), TEXT_FG) \ 1765 && (sel) != (fg) \ 1766 && (sel) != (bg) \ 1767 && (sel) != (xw)->dft_foreground) 1768 #define isNotBackground(xw, fg, bg, sel) \ 1769 (Boolean) ((sel) != T_COLOR(TScreenOf(xw), TEXT_BG) \ 1770 && (sel) != (fg) \ 1771 && (sel) != (bg) \ 1772 && (sel) != (xw)->dft_background) 1773 #endif 1774 1775 #if OPT_WIDE_CHARS 1776 extern int DamagedCells(TScreen * /* screen */, unsigned /* n */, int * /* klp */, int * /* krp */, int /* row */, int /* col */); 1777 extern int DamagedCurCells(TScreen * /* screen */, unsigned /* n */, int * /* klp */, int * /* krp */); 1778 extern unsigned AsciiEquivs(unsigned /* ch */); 1779 extern void addXtermCombining (TScreen * /* screen */, int /* row */, int /* col */, unsigned /* ch */); 1780 extern void allocXtermChars(ScrnPtr * /* buffer */, Cardinal /* length */); 1781 #endif 1782 1783 #if OPT_XMC_GLITCH 1784 extern void Mark_XMC (XtermWidget /* xw */, int /* param */); 1785 extern void Jump_XMC (XtermWidget /* xw */); 1786 extern void Resolve_XMC (XtermWidget /* xw */); 1787 #endif 1788 1789 #if OPT_WIDE_CHARS 1790 unsigned visual_width(const IChar * /* str */, Cardinal /* len */); 1791 #else 1792 #define visual_width(a, b) (b) 1793 #endif 1794 1795 #define BtoS(b) ((b) ? "on" : "off") 1796 #define MtoS(b) (((b) == Maybe) ? "maybe" : BtoS(b)) 1797 #define NonNull(s) ((s) ? (s) : "<null>") 1798 1799 #define UIntSet(dst,bits) dst = dst | (unsigned) (bits) 1800 #define UIntClr(dst,bits) dst = dst & (unsigned) ~(bits) 1801 1802 #ifdef __cplusplus 1803 } 1804 #endif 1805 /* *INDENT-ON* */ 1806 1807 #endif /* included_xterm_h */