1-- $Id: INSTALL,v 1.36 2000/05/06 17:30:14 tom Exp $ 2--------------------------------------------------------------------- 3 How to install Ncurses/Terminfo on your system 4--------------------------------------------------------------------- 5 6 ************************************************************ 7 * READ ALL OF THIS FILE BEFORE YOU TRY TO INSTALL NCURSES. * 8 ************************************************************ 9 10You should be reading the file INSTALL in a directory called ncurses-d.d, where 11d.d is the current version number. There should be several subdirectories, 12including `c++', `form', `man', `menu', 'misc', `ncurses', `panel', `progs', 13and `test'. See the README file for a roadmap to the package. 14 15If you are a Linux or FreeBSD or NetBSD distribution integrator or packager, 16please read and act on the section titled IF YOU ARE A SYSTEM INTEGRATOR 17below. 18 19If you are converting from BSD curses and do not have root access, be sure 20to read the BSD CONVERSION NOTES section below. 21 22If you are using a version of XFree86 xterm older than 3.1.2F, see the section 23on RECENT XTERM VERSIONS below. 24 25If you are trying to build GNU Emacs using ncurses for terminal support, 26read the USING NCURSES WITH EMACS section below. 27 28If you are trying to build applications using gpm with ncurses, 29read the USING NCURSES WITH GPM section below. 30 31If you are trying to build Elvis using ncurses for terminal support, 32read the USING NCURSES WITH ELVIS section below. 33 34If you are running over the Andrew File System see the note below on 35USING NCURSES WITH AFS. 36 37If you want to build the Ada95 binding, go to the Ada95 directory and 38follow the instructions there. The Ada95 binding is not covered below. 39 40If you are using anything but (a) Linux, or (b) one of the 4.4BSD-based 41i386 Unixes, go read the Portability section in the TO-DO file before you 42do anything else. 43 44 45REQUIREMENTS: 46------------ 47 48You will need the following in order to build and install ncurses under UNIX: 49 50 * ANSI C compiler (gcc is recommended) 51 * sh (bash will do) 52 * awk (mawk or gawk will do) 53 * sed 54 * BSD or System V style install (a script is enclosed) 55 56Ncurses has been also built in the OS/2 EMX environment. 57 58 59INSTALLATION PROCEDURE: 60---------------------- 61 621. First, decide whether you want ncurses to replace your existing library (in 63 which case you'll need super-user privileges) or be installed in parallel 64 with it. 65 66 The --prefix option to configure changes the root directory for installing 67 ncurses. The default is in subdirectories of /usr/local. Use 68 --prefix=/usr to replace your default curses distribution. This is the 69 default for Linux and BSD/OS users. 70 71 The package gets installed beneath the --prefix directory as follows: 72 73 In $(prefix)/bin: tic, infocmp, captoinfo, tset, 74 reset, clear, tput, toe 75 In $(prefix)/lib: libncurses*.* libcurses.a 76 In $(prefix)/share/terminfo: compiled terminal descriptions 77 In $(prefix)/include: C header files 78 Under $(prefix)/man: the manual pages 79 80 Note however that the configure script attempts to locate previous 81 installation of ncurses, and will set the default prefix according to where 82 it finds the ncurses headers. 83 842. Type `./configure' in the top-level directory of the distribution to 85 configure ncurses for your operating system and create the Makefiles. 86 Besides --prefix, various configuration options are available to customize 87 the installation; use `./configure --help' to list the available options. 88 89 If your operating system is not supported, read the PORTABILITY section in 90 the file ncurses/README for information on how to create a configuration 91 file for your system. 92 93 The `configure' script generates makefile rules for one or more object 94 models and their associated libraries: 95 96 libncurses.a (normal) 97 98 libcurses.a (normal, a link to libncurses.a) 99 This gets left out if you configure with --disable-overwrite. 100 101 libncurses.so (shared) 102 103 libncurses_g.a (debug) 104 105 libncurses_p.a (profile) 106 107 If you do not specify any models, the normal and debug libraries will be 108 configured. Typing `configure' with no arguments is equivalent to: 109 110 ./configure --with-normal --with-debug --enable-overwrite 111 112 Typing 113 114 ./configure --with-shared 115 116 makes the shared libraries the default, resulting in 117 118 ./configure --with-shared --with-normal --with-debug --enable-overwrite 119 120 If you want only shared libraries, type 121 122 ./configure --with-shared --without-normal --without-debug 123 124 Rules for generating shared libraries are highly dependent upon the choice 125 of host system and compiler. We've been testing shared libraries on Linux 126 and SunOS with gcc, but more work needs to be done to make shared libraries 127 work on other systems. 128 129 You can make curses and terminfo fall back to an existing file of termcap 130 definitions by configuring with --enable-termcap. If you do this, the 131 library will search /etc/termcap before the terminfo database, and will 132 also interpret the contents of the TERM environment variable. See the 133 section BSD CONVERSION NOTES below. 134 1353. Type `make'. Ignore any warnings, no error messages should be produced. 136 This should compile the ncurses library, the terminfo compiler tic(1), 137 captoinfo(1), infocmp(1), toe(1), clear(1) tset(1), reset(1), and tput(1) 138 programs (see the man pages for explanation of what they do), some test 139 programs, and the panels, menus, and forms libraries. 140 1414. Run ncurses and several other test programs in the test directory to 142 verify that ncurses functions correctly before doing an install that 143 may overwrite system files. Read the file test/README for details on 144 the test programs. 145 146 NOTE: You must have installed the terminfo database, or set the 147 environment variable $TERMINFO to point to a SVr4-compatible terminfo 148 database before running the test programs. Not all vendors' terminfo 149 databases are SVr4-compatible, but most seem to be. Exceptions include 150 DEC's Digital Unix (formerly known as OSF/1). 151 152 The ncurses program is designed specifically to test the ncurses library. 153 You can use it to verify that the screen highlights work correctly, that 154 cursor addressing and window scrolling works OK, etc. 155 1565. Once you've tested, you can type `make install' to install libraries, 157 the programs, the terminfo database and the man pages. Alternately, you 158 can type `make install' in each directory you want to install. In the 159 top-level directory, you can do a partial install using these commands: 160 161 'make install.progs' installs tic, infocmp, etc... 162 'make install.includes' installs the headers. 163 'make install.libs' installs the libraries (and the headers). 164 'make install.data' installs the terminfo data. (Note: `tic' must 165 be installed before the terminfo data can be 166 compiled). 167 'make install.man' installs the man pages. 168 169 ############################################################################ 170 # CAVEAT EMPTOR: `install.data' run as root will NUKE any existing # 171 # terminfo database. If you have any custom or unusual entries SAVE them # 172 # before you install ncurses. I have a file called terminfo.custom for # 173 # this purpose. Don't forget to run tic on the file once you're done. # 174 ############################################################################ 175 176 The terminfo(5) manual page wants to be preprocessed with tbl(1) before 177 being formatted by nroff(1). Modern man(1) implementations tend to do 178 this by default, but you may want to look at your version's man page 179 to be sure. 180 181 If the system already has a curses library that you need to keep using 182 for some bizarre binary-compatibility reason, you'll need to distinguish 183 between it and ncurses. If ncurses is installed outside the standard 184 directories (/usr/include and /usr/lib) then all your users will need 185 to use the -I option to compile programs and -L to link them. 186 187 If you have BSD curses installed in your system and you accidentally 188 compile using its curses.h you'll end up with a large number of 189 undefined symbols at link time. _waddbytes is one of them. 190 191 IF YOU DO NOT HAVE ROOT: Change directory to the `progs' subdirectory 192 and run the `capconvert' script. This script will deduce various things 193 about your environment and use them to build you a private terminfo tree, 194 so you can use ncurses applications. 195 196 If more than one user at your site does this, the space for the duplicate 197 trees is wasted. Try to get your site administrators to install a system- 198 wide terminfo tree instead. 199 200 See the BSD CONVERSION NOTES section below for a few more details. 201 2026. The c++ directory has C++ classes that are built on top of ncurses and 203 panels. You must have c++ (and its libraries) installed before you can 204 compile and run the demo. 205 206 Use --without-cxx-binding to tell configure to not build the C++ bindings 207 and demo. 208 209 If you do not have C++, you must use the --without-cxx option to tell 210 the configure script to not attempt to determine the type of 'bool' 211 which may be supported by C++. IF YOU USE THIS OPTION, BE ADVISED THAT 212 YOU MAY NOT BE ABLE TO COMPILE (OR RUN) NCURSES APPLICATIONS WITH C++. 213 2147. If you're running an older Linux, you must either (a) tell Linux that the 215 console terminal type is `linux' or (b) make a link to or copy of the 216 linux entry in the appropriate place under your terminfo directory, named 217 `console'. All 1.3 and many 1.2 distributions (including Yggdrasil and 218 Red Hat) already have the console type set to `linux'. 219 220 The way to change the wired-in console type depends on the configuration 221 of your system. This may involve editing /etc/inittab, /etc/ttytype, 222 /etc/profile and other such files. 223 224 Warning: this is not for the fainthearted, if you mess up your console 225 getty entries you can make your system unusable! However, if you are 226 a distribution maker, this is the right thing to do (see the note for 227 integrators near the end of this file). 228 229 The easier way is to link or copy l/linux to c/console under your terminfo 230 directory. Note: this will go away next time you do `make install.data' 231 and you'll have to redo it. There is no need to have entries for all 232 possible screen sizes, ncurses will figure out the size automatically. 233 234 235COMPATIBILITY WITH OLDER VERSIONS OF NCURSES: 236-------------------------------------------- 237 238 Because ncurses implements the X/Open Curses Specification, its interface 239 is fairly stable. That does not mean the interface does not change. 240 Changes are made to the documented interfaces when we find differences 241 between ncurses and X/Open or implementations which they certify (such as 242 Solaris). We add extensions to those interfaces to solve problems not 243 addressed by the original curses design, but those must not conflict with 244 the X/Open documentation. 245 246 Here are some of the major interface changes, and related problems which 247 you may encounter when building a system with different versions of 248 ncurses: 249 250 5.0 251 Interface changes: 252 253 + implemented the wcolor_set() and slk_color() functions. 254 255 + move macro winch to a function, to hide details of struct ldat 256 257 + corrected prototypes for slk_* functions, using chtype rather than 258 attr_t. 259 260 + the slk_attr_{set,off,on} functions need an additional void* 261 parameter according to XSI. 262 263 + modified several prototypes to correspond with 1997 version of X/Open 264 Curses: [w]attr_get(), [w]attr_set(), border_set() have different 265 parameters. Some functions were renamed or misspelled: 266 erase_wchar(), in_wchntr(), mvin_wchntr(). Some developers have used 267 attr_get(). 268 269 Added extensions: keybound(), curses_version(). 270 271 Terminfo database changes: 272 273 + change translation for termcap 'rs' to terminfo 'rs2', which is 274 the documented equivalent, rather than 'rs1'. 275 276 The problems are subtler in recent releases. 277 278 a) This release provides users with the ability to define their own 279 terminal capability extensions, like termcap. To accomplish this, 280 we redesigned the TERMTYPE struct (in term.h). Very few 281 applications use this struct. They must be recompiled to work with 282 the 5.0 library. 283 284 a) If you use the extended terminfo names (i.e., you used configure 285 --enable-tcap-names), the resulting terminfo database can have some 286 entries which are not readable by older versions of ncurses. This 287 is a bug in the older versions: 288 289 + the terminfo database stores booleans, numbers and strings in 290 arrays. The capabilities that are listed in the arrays are 291 specified by X/Open. ncurses recognizes a number of obsolete and 292 extended names which are stored past the end of the specified 293 entries. 294 295 + a change to read_entry.c in 951001 made the library do an lseek() 296 call incorrectly skipping data which is already read from the 297 string array. This happens when the number of strings in the 298 terminfo data file is greater than STRCOUNT, the number of 299 specified and obsolete or extended strings. 300 301 + as part of alignment with the X/Open final specification, in the 302 990109 patch we added two new terminfo capabilities: 303 set_a_attributes and set_pglen_inch). This makes the indices for 304 the obsolete and extended capabilities shift up by 2. 305 306 + the last two capabilities in the obsolete/extended list are memu 307 and meml, which are found in most terminfo descriptions for xterm. 308 309 When trying to read this terminfo entry, the spurious lseek() 310 causes the library to attempt to read the final portion of the 311 terminfo data (the text of the string capabilities) 4 characters 312 past its starting point, and reads 4 characters too few. The 313 library rejects the data, and applications are unable to 314 initialize that terminal type. 315 316 FIX: remove memu and meml from the xterm description. They are 317 obsolete, not used by ncurses. (It appears that the feature was 318 added to xterm to make it more like hpterm). 319 320 This is not a problem if you do not use the -x option of tic to 321 create a terminfo database with extended names. Note that the 322 user-defined terminal capabilities are not affected by this bug, 323 since they are stored in a table after the older terminfo data ends, 324 and are invisible to the older libraries. 325 326 c) Some developers did not wish to use the C++ binding, and used the 327 configure --without-cxx option. This causes problems if someone 328 uses the ncurses library from C++ because that configure test 329 determines the type for C++'s bool and makes ncurses match it, since 330 both C++ and curses are specified to declare bool. Calling ncurses 331 functions with the incorrect type for bool will cause execution 332 errors. In 5.0 we added a configure option "--without-cxx-binding" 333 which controls whether the binding itself is built and installed. 334 335 4.2 336 Interface changes: 337 338 + correct prototype for termattrs() as per XPG4 version 2. 339 340 + add placeholder prototypes for color_set(), erasewchar(), 341 term_attrs(), wcolor_set() as per XPG4 version 2. 342 343 + add macros getcur[xy] getbeg[xy] getpar[xy], which are defined in 344 SVr4 headers. 345 346 New extensions: keyok() and define_key(). 347 348 Terminfo database changes: 349 350 + corrected definition in curses.h for ACS_LANTERN, which was 'I' 351 rather than 'i'. 352 353 4.1 (May 15, 1997) 354 355 We added these extensions: use_default_colors(). Also added 356 configure option --enable-const, to support the use of const where 357 X/Open should have, but did not, specify. 358 359 The terminfo database content changed the representation of color for 360 most entries that use ANSI colors. SVr4 curses treats the setaf/setab 361 and setf/setb capabilities differently, interchanging the red/blue 362 colors in the latter. 363 364 4.0 (December 24, 1996) 365 366 We bumped to version 4.0 because the newly released dynamic loader 367 (ld.so.1.8.5) on Linux did not load shared libraries whose ABI and REL 368 versions were inconsistent. At that point, ncurses ABI was 3.4 and the 369 REL was 1.9.9g, so we made them consistent. 370 371 1.9.9g (December 1, 1996) 372 373 This fixed most of the problems with 1.9.9e, and made these interface 374 changes: 375 376 + remove tparam(), which had been provided for compatibility with 377 some termcap. tparm() is standard, and does not conflict with 378 application's fallback for missing tparam(). 379 380 + turn off hardware echo in initscr(). This changes the sense of the 381 echo() function, which was initialized to echoing rather than 382 nonechoing (the latter is specified). There were several other 383 corrections to the terminal I/O settings which cause applications to 384 behave differently. 385 386 + implemented several functions (such as attr_on()) which were 387 available only as macros. 388 389 + corrected several typos in curses.h.in (i.e., the mvXXXX macros). 390 391 + corrected prototypes for delay_output(), 392 has_color, immedok() and idcok(). 393 394 + corrected misspelled getbkgd(). Some applications used the 395 misspelled name. 396 397 + added _yoffset to WINDOW. The size of WINDOW does not impact 398 applications, since they use only pointers to WINDOW structs. 399 400 These changes were made to the terminfo database: 401 402 + removed boolean 'getm' which was available as an extended name. 403 404 We added these extensions: wresize(), resizeterm(), has_key() and 405 mcprint(). 406 407 1.9.9e (March 24, 1996) 408 409 not recommended (a last-minute/untested change left the forms and 410 menus libraries unusable since they do not repaint the screen). 411 Foreground/background colors are combined incorrectly, working properly 412 only on a black background. When this was released, the X/Open 413 specification was available only in draft form. 414 415 Some applications (such as lxdialog) were "fixed" to work with the 416 incorrect color scheme. 417 418 419IF YOU ARE A SYSTEM INTEGRATOR: 420------------------------------ 421 422 Beginning with 1.9.9, the ncurses distribution includes both a tset 423 utility and /usr/share/tabset directory. If you are installing ncurses, 424 it is no longer either necessary or desirable to install tset-jv. 425 426 Configuration and Installation: 427 428 Configure with --prefix=/usr to make the install productions put 429 libraries and headers in the correct locations (overwriting any 430 previous curses libraries and headers). This will put the terminfo 431 hierarchy under /usr/share/terminfo; you may want to override this with 432 --datadir=/usr/share/misc; terminfo and tabset are installed under the 433 data directory. 434 435 Please configure the ncurses library in a pure-terminfo mode; that 436 is, with the --disable-termcap option. This will make the ncurses 437 library smaller and faster. The ncurses library includes a termcap 438 emulation that queries the terminfo database, so even applications 439 that use raw termcap to query terminal characteristics will win 440 (providing you recompile and relink them!). 441 442 If you must configure with termcap fallback enabled, you may also 443 wish to use the --enable-getcap option. This option speeds up 444 termcap-based startups, at the expense of not allowing personal 445 termcap entries to reference the terminfo tree. See the code in 446 ncurses/tinfo/read_termcap.c for details. 447 448 Note that if you have $TERMCAP set, ncurses will use that value 449 to locate termcap data. In particular, running from xterm will 450 set $TERMCAP to the contents of the xterm's termcap entry. 451 If ncurses sees that, it will not examine /etc/termcap. 452 453 Keyboard Mapping: 454 455 The terminfo file assumes that Shift-Tab generates \E[Z (the ECMA-48 456 reverse-tabulation sequence) rather than ^I. Here are the loadkeys -d 457 mappings that will set this up: 458 459 keycode 15 = Tab Tab 460 alt keycode 15 = Meta_Tab 461 shift keycode 15 = F26 462 string F26 ="\033[Z" 463 464 Naming the Console Terminal 465 466 In various Linuxes (and possibly elsewhere) there has been a practice 467 of designating the system console driver type as `console'. Please 468 do not do this any more! It complicates peoples' lives, because it 469 can mean that several different terminfo entries from different 470 operating systems all logically want to be called `console'. 471 472 Please pick a name unique to your console driver and set that up 473 in the /etc/inittab table or local equivalent. Send the entry to the 474 terminfo maintainer (listed in the misc/terminfo file) to be included 475 in the terminfo file, if it's not already there. See the 476 term(7) manual page included with this distribution for more on 477 conventions for choosing type names. 478 479 Here are some recommended primary console names: 480 481 linux -- Linux console driver 482 freebsd -- FreeBSD 483 netbsd -- NetBSD 484 bsdos -- BSD/OS 485 486 If you are responsible for integrating ncurses for one of these 487 distribution, please either use the recommended name or get back 488 to us explaining why you don't want to, so we can work out nomenclature 489 that will make users' lives easier rather than harder. 490 491 492RECENT XTERM VERSIONS: 493--------------------- 494 495 The terminfo database file included with this distribution assumes you 496 are running an XFree86 xterm based on X11R6 (i.e., xterm-r6). The 497 earlier X11R5 entry (xterm-r5) is provided as well. 498 499 If you are running XFree86 version 3.2 (actually 3.1.2F and up), you 500 should consider using the xterm-xf86-v32 (or later, the most recent 501 version is always named "xterm-xfree86") entry, which adds ANSI color 502 and the VT220 capabilities which have been added in XFree86. If you 503 are running a mixed network, however, where this terminal description 504 may be used on an older xterm, you may have problems, since 505 applications that assume these capabilities will produce incorrect 506 output on the older xterm (e.g., highlighting is not cleared). 507 508 509CONFIGURING FALLBACK ENTRIES: 510---------------------------- 511 512 In order to support operation of ncurses programs before the terminfo 513 tree is accessible (that is, in single-user mode or at OS installation 514 time) the ncurses library can be compiled to include an array of 515 pre-fetched fallback entries. 516 517 These entries are checked by setupterm() only when the conventional 518 fetches from the terminfo tree and the termcap fallback (if configured) 519 have been tried and failed. Thus, the presence of a fallback will not 520 shadow modifications to the on-disk entry for the same type, when that 521 entry is accessible. 522 523 By default, there are no entries on the fallback list. After you 524 have built the ncurses suite for the first time, you can change 525 the list (the process needs infocmp(1)). To do so, use the script 526 MKfallback.sh. A configure script option --with-fallbacks does this 527 (it accepts a comma-separated list of the names you wish, and does 528 not require a rebuild). 529 530 If you wanted (say) to have linux, vt100, and xterm fallbacks, you 531 would use the commands 532 533 cd ncurses; 534 MKfallback.sh linux vt100 xterm >fallback.c 535 536 Then just rebuild and reinstall the library as you would normally. 537 You can restore the default empty fallback list with 538 539 MKfallback.sh >fallback.c 540 541 The overhead for an empty fallback list is one trivial stub function. 542 Any non-empty fallback list is const-ed and therefore lives in sharable 543 text space. You can look at the comment trailing each initializer in 544 the generated ncurses/fallback.c file to see the core cost of the 545 fallbacks. A good rule of thumb for modern vt100-like entries is that 546 each one will cost about 2.5K of text space. 547 548 549BSD CONVERSION NOTES: 550-------------------- 551 552 If you need to support really ancient BSD programs, you probably 553 want to configure with the --enable-bsdpad option. What this does 554 is enable code in tputs() that recognizes a numeric prefix on a 555 capability as a request for that much trailing padding in milliseconds. 556 There are old BSD programs that do things like tputs("50"). 557 558 (If you are distributing ncurses as a support-library component of 559 an application you probably want to put the remainder of this section 560 in the package README file.) 561 562 The following note applies only if you have configured ncurses with 563 --enable-termcap. 564 565------------------------------- CUT HERE -------------------------------- 566 567If you are installing this application privately (either because you 568have no root access or want to experiment with it before doing a root 569installation), there are a couple of details you need to be aware of. 570They have to do with the ncurses library, which uses terminfo rather 571than termcap for describing terminal characteristics. 572 573Though the ncurses library is terminfo-based, it will interpret your 574TERMCAP variable (if present), any local termcap files you reference 575through it, and the system termcap file. However, in order to avoid 576slowing down your application startup, it will only do this once per 577terminal type! 578 579The first time you load a given terminal type from your termcap 580database, the library initialization code will automatically write it 581in terminfo format to a subdirectory under $HOME/.terminfo. After 582that, the initialization code will find it there and do a (much 583faster) terminfo fetch. 584 585Usually, all this means is that your home directory will silently grow 586an invisible .terminfo subdirectory which will get filled in with 587terminfo descriptions of terminal types as you invoke them. If anyone 588ever installs a global terminfo tree on your system, this will quietly 589stop happening and your $HOME/.terminfo will become redundant. 590 591The objective of all this logic is to make converting from BSD termcap 592as painless as possible without slowing down your application (termcap 593compilation is expensive). 594 595If you don't have a TERMCAP variable or custom personal termcap file, 596you can skip the rest of this dissertation. 597 598If you *do* have a TERMCAP variable and/or a custom personal termcap file 599that defines a terminal type, that definition will stop being visible 600to this application after the first time you run it, because it will 601instead see the terminfo entry that it wrote to $HOME/terminfo the 602first time around. 603 604Subsequently, editing the TERMCAP variable or personal TERMCAP file 605will have no effect unless you explicitly remove the terminfo entry 606under $HOME/terminfo. If you do that, the entry will be recompiled 607from your termcap resources the next time it is invoked. 608 609To avoid these complications, use infocmp(1) and tic(1) to edit the 610terminfo directory directly. 611 612------------------------------- CUT HERE -------------------------------- 613 614USING NCURSES WITH AFS: 615 AFS treats each directory as a separate logical filesystem, you 616 can't hard-link across them. The --enable-symlinks option copes 617 with this by making tic use symbolic links. 618 619USING NCURSES WITH EMACS: 620 GNU Emacs has its own termcap support. By default, it uses a mixture 621 of those functions and code linked from the host system's libraries. 622 You need to foil this and shut out the GNU termcap library entirely. 623 624 In order to do this, hack the Linux config file (s/linux.h) to contain 625 a #define TERMINFO and set the symbol LIBS_TERMCAP to "-lncurses". 626 627 We have submitted such a change for the 19.30 release, so it may 628 already be applied in your sources -- check for the #define TERMINFO. 629 630USING NCURSES WITH GPM: 631 Ncurses 4.1 and up can be configured to use GPM (General Purpose Mouse) 632 which is used on Linux console. Be aware that GPM is commonly 633 installed as a shared library which contains a wrapper for the curses 634 wgetch() function (libcurses.o). Some integrators have simplified 635 linking applications by combining all of libcurses.so (the BSD curses) 636 into the libgpm.so file, producing symbol conflicts with ncurses. You 637 may be able to work around this problem by linking as follows: 638 639 cc -o foo foo.o -lncurses -lgpm -lncurses 640 641 but the linker may not cooperate, producing mysterious errors. 642 A patched version of gpm is available: 643 644 dickey.his.com:/ncurses/gpm-1.10-970125.tar.gz 645 646 This patch is incorporated in gpm 1.12; however some integrators 647 are slow to update this library. 648 649USING NCURSES WITH ELVIS: 650 To use ncurses as the screen-painting library for Elvis, apply the 651 following patch to the Elvis curses 652 653*** curses.c.orig Sun Jun 26 05:48:23 1994 654--- curses.c Sun Feb 11 16:50:41 1996 655*************** 656*** 986,992 **** 657 { 658 if (has_IM) 659 do_IM(); 660! do_IC(); 661 qaddch(ch); 662 if (has_EI) 663 do_EI(); 664--- 986,995 ---- 665 { 666 if (has_IM) 667 do_IM(); 668!#ifdef NCURSES_VERSION 669! else /* ncurses does insertion in a slightly nonstandard way */ 670!#endif 671! do_IC(); 672 qaddch(ch); 673 if (has_EI) 674 do_EI(); 675 676This patch is for elvis-1.8pl4 but it can even be used for elvis-1.8pl3 with 677an offset of -11 lines. 678 679BUGS: 680 Send any feedback to the ncurses mailing list at 681 bug-ncurses@gnu.org. To subscribe send mail to 682 bug-ncurses-request@gnu.org with body that reads: 683 subscribe ncurses <your-email-address-here> 684 685 The Hacker's Guide in the misc directory includes some guidelines 686 on how to report bugs in ways that will get them fixed most quickly. 687